0

I got some trouble with implementing CheckBox in ListView. I already follow some tutorial but there doesn't work.
This is my code:

list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

        checkBox = (CheckBox) list_view.getAdapter().getView(position, view, null).findViewById(R.id.checkBox_pegawai);
        if (checkBox.isChecked()) {
            checkBox.setChecked(false);
        } else {
            checkBox.setChecked(true);
            checkbox_simpan = checkBox.getText().toString();
            Toast.makeText(MutasiActivity.this,"Berhasil", Toast.LENGTH_LONG).show();
        }
    }
});
Dumbo
  • 1,630
  • 18
  • 33
  • 9
    Possible duplicate of [Get Selected Item Using Checkbox in Listview](https://stackoverflow.com/questions/18162931/get-selected-item-using-checkbox-in-listview) – AskNilesh Feb 27 '18 at 07:20
  • A tip for you try using `onCheckedChangeListener` inside your adaptor – Ashutosh Sagar Feb 27 '18 at 07:22
  • I have a working example for this. https://github.com/myJarvis/ListView/blob/master/app/src/main/java/com/myjarvis/listviewexample – Sachin Rajput Feb 27 '18 at 07:43

1 Answers1

0

Use List<String> in your adapter for hold the checked items and implement Checked change listener in getView() at your adapter.

Example:

class AdapterList extents BaseAdapter{
 List<String> selectedItems=new ArrayList<>();
 List<String> listOfItems=new ArrayList<>();
 //your other methods

 View getView(View v,int position)     [
 //inflate you view and find your checkbox

  checkbox.setChecked(selectedItems.contains(listOfItems.get(position))
   checkbox.setOnCheckedChangeListener(new                 CompoundButton.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        if(isChecked)
selectedItems.add(listOfItems.get(position);
else
  selectedItems.reove(listOfItems.get(position);
                    }
                });
} 

}
Rajasekaran M
  • 2,478
  • 2
  • 20
  • 30