0

Having checkbox in listview,scrolling loses selected checkbox and random checkbox get checked Having checkbox in listview ,scrolling loses selected checkbox and random checkbox get checked. I am scrolling this listview selected checkbox is unchecked. Checkbox loses their state

public class FriendList extends ArrayAdapter<FriendListResult> {
    private List<FriendListResult> list;
    LayoutInflater layoutInflater;
    public int resource;
    private Holder holder = null;

  //Constructor
  public FriendList(Context context, int resource, List<FriendListResult> objects) {
    super(context, resource, objects);
    this.list = objects;
    this.resource = resource;
      // Cache the LayoutInflate to avoid asking for a new one each time.
    this.layoutInflater = LayoutInflater.from(context);
    }

// getview method
@Override
public View getView(final int position, View view, ViewGroup parent) {
// check if view is null or not
// create new row view
    if (view == null) {
// inflating layout
        view = layoutInflater.inflate(resource, null);
// initializing  holder
        holder = new Holder();
        holder.txtTitle = (TextView) view.findViewById(R.id.tvContactNameMain);
     // checkbox defined
        holder.checkBox = (CheckBox) view.findViewById(R.id.chkboxFriendListItem);
        view.setTag(holder);
    } 
    else {
        holder = (Holder) view.getTag();
    }
    // set value from the list
    final FriendListResult friendListResult = list.get(position);
    // get and set name
    holder.txtTitle.setText(friendListResult.getNickname());

// checkbox changeListener
holder.checkBox.setOnCheckedChangeListener(new  >CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
//  Maximum three selection for checkbox
  {   
  if (checkArrayList.size() >= 3 && isChecked) {
        buttonView.setChecked(false); 
Toast.makeText(getContext(), "You have already chosen 3 friends",
        Toast.LENGTH_LONG).show();
    } else if (isChecked) {
       //  storing position id to arraylist
        checkArrayList.add(getItem(position).getId());
        notifyDataSetChanged();
      // userCheckCount to get the count
        userCheckCount++;
    } else if (!isChecked) {    
    //removing position from arraylist
        checkArrayList.remove(getItem(position).getId());
        notifyDataSetChanged();
        userCheckCount--;
    }    
  } 
 });
  return view;
}
 // holder class initializing widgets
    class Holder {   
    private TextView txtTitle;
    private CheckBox checkBox;
    }
}
echodhruva
  • 37
  • 3
  • I recommend using [RecyclerView](https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html) which provides default mechanism to deal with this issue – Rahul Tiwari Jun 23 '16 at 13:13

1 Answers1

0

You can check this link. Use POJO class to save the checked status of the checkbox. Its simple just go through this link.

http://android-pratap.blogspot.in/2015/01/recyclerview-with-checkbox-example.html

CheckBox in RecyclerView keeps on checking different items

Community
  • 1
  • 1
Sagar Gangawane
  • 1,985
  • 1
  • 12
  • 22