2016-06-23 10 views
0

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

ich mit empfehlen [RecyclerView] (https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html), die liefert Standardmechanismus, um mit diesem Problem umzugehen –

Antwort