列表视图中有复选框,滚动会丢失所选复选框并选中随机复选框 在listview中有复选框,滚动会丢失所选的复选框和 随机复选框被检查。 我正在滚动此列表视图选中复选框未选中。 Checkbox失去状态
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; } }
答案 0 :(得分:0)
您可以查看此链接。 使用POJO类保存复选框的已检查状态。 它的简单只需要通过这个链接。
http://android-pratap.blogspot.in/2015/01/recyclerview-with-checkbox-example.html