dimanche 19 février 2017

How to get value from listview checkbox?

I am having a little trouble with listview, I want to get values of listview whose checkbox are selected when button is clicked. till now i have created a listview with checkboxes and fetched all the values from mysql but i am not able to get values of listview which are checked.

This is my class

public class ListViewMultipleSelectionActivity extends Activity{
    Button button;
    String myJSON;

    private static final String TAG_NAME = "cat_name";

    JSONArray peoples = null;

    ArrayList<HashMap<String, String>> personList;

    ListView list1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        personList = new ArrayList<HashMap<String,String>>();
        list1 = (ListView) findViewById(R.id.list);
        button = (Button)findViewById(R.id.testbutton);
        getlat();



        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {


            }
        });

    }

    public void getlat(){
        class GetDataJSON extends AsyncTask<String, Void, String> {
            public void onPreExecute() {
            }
            @Override
            protected String doInBackground(String... params) {

                InputStream inputStream = null;
                String result = null;
                try {

                    URL url = new URL("http://xxxxxxxxxxxx/category.php");

                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setReadTimeout(15000 /* milliseconds */);
                    conn.setConnectTimeout(15000 /* milliseconds */);
                    conn.setRequestMethod("POST");
                    conn.setDoInput(true);
                    conn.setDoOutput(true);
                    OutputStream os = conn.getOutputStream();

                    os.close();

                    int responseCode=conn.getResponseCode();

                    if (responseCode == HttpsURLConnection.HTTP_OK) {

                        BufferedReader in=new BufferedReader(new InputStreamReader(conn.getInputStream()));
                        StringBuilder sb = new StringBuilder("");
                        String line="";
                        while ((line = in.readLine()) != null)
                        {
                            sb.append(line).append("\n");
                        }
                        result = sb.toString();
                    }

                    assert inputStream != null;
                    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
                    StringBuilder sb = new StringBuilder();

                    String line = null;
                    while ((line = reader.readLine()) != null)
                    {
                        sb.append(line).append("\n");
                    }
                    result = sb.toString();
                } catch (Exception e) {
                    Log.i("tagconvertstr", "["+result+"]");
                    System.out.println(e);
                }
                finally {
                    try{if(inputStream != null)inputStream.close();}catch(Exception squish){}
                }
                return result;
            }

            @Override
            protected void onPostExecute(String result){

                myJSON = result;
                showList();

            }
        }
        GetDataJSON g = new GetDataJSON();
        g.execute();
    }



    protected void showList(){
        try {
            peoples = new JSONArray(myJSON);
            for(int i=0;i<peoples.length();i++){

                JSONObject c = peoples.getJSONObject(i);
                String name = c.getString(TAG_NAME);

                HashMap<String,String> persons = new HashMap<String,String>();

                persons.put(TAG_NAME,name);

                personList.add(persons);
            }



            ListAdapter adapter = new SimpleAdapter(
                    ListViewMultipleSelectionActivity.this, personList, R.layout.result,
                    new String[]{TAG_NAME},
                    new int[]{R.id.name}
            );




            list1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
            list1.setAdapter(adapter);

        } catch (JSONException e) {
            e.printStackTrace();
        }

    }



}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://ift.tt/nIICcg"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <Button
        android:id="@+id/testbutton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Submit" />

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@id/testbutton"
        android:layout_alignParentTop="true"/>

</RelativeLayout>

result.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://ift.tt/nIICcg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<CheckBox
    android:id="@+id/cbBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical" >
</CheckBox>

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:orientation="vertical"
    android:layout_weight="1" >

    <TextView
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="2dip"
        android:textStyle="bold"/>

</LinearLayout>

</LinearLayout>

i have implemented this on testbutton(Button) click please check

button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                SparseBooleanArray checked = list1.getCheckedItemPositions();
                ArrayList<String> selectedItems = new ArrayList<String>();
                for (int i = 0; i < checked.size(); i++) {
                    int position = checked.keyAt(i);
                       if (checked.valueAt(i))
                         selectedItems.add((String) adapter.getItem(position));
                }

                String[] valuess = new String[selectedItems.size()];

                for (int i = 0; i < selectedItems.size(); i++) {
                    valuess[i] = selectedItems.get(i);
                }
                Toast.makeText(ListViewMultipleSelectionActivity.this, String.valueOf(valuess), Toast.LENGTH_SHORT).show();
            }
        });

this is i am getting after click

E/-->>>>: [Ljava.lang.String;@ca01299




Aucun commentaire:

Enregistrer un commentaire