Checkbox in ListView, Scrollen verliert das ausgewählte Kontrollkästchen und zufällige Checkbox wird überprüft Checkbox in ListView, Scrollen verliert Kontrollkästchen und zufällige Checkbox überprüft werden. Ich scrolle dieses Listenansicht ausgewählt Kontrollkästchen ist deaktiviert. Checkbox verliert ihren ZustandKontrollkästchen in der Listenansicht, Scrollen verliert Kontrollkästchen und zufällige Checkbox wird überprüft
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; } }
ich mit empfehlen [RecyclerView] (https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html), die liefert Standardmechanismus, um mit diesem Problem umzugehen –