jeudi 23 juin 2016

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 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;
    }
}




Aucun commentaire:

Enregistrer un commentaire