有誰知道,如何處理RecyclerView
滾動問題與複選框?Recyclerview滾動問題
我使用Recyclerview
中的多個複選框來增加視圖的空間,並在滾動Recyclerview
時檢查複選框後,選中的複選框將被取消選中。
如何防止在Android中的Recyclerview
中取消選中複選框。
有誰知道,如何處理RecyclerView
滾動問題與複選框?Recyclerview滾動問題
我使用Recyclerview
中的多個複選框來增加視圖的空間,並在滾動Recyclerview
時檢查複選框後,選中的複選框將被取消選中。
如何防止在Android中的Recyclerview
中取消選中複選框。
你必須保持這個在您的List<Object>
每個位置,然後在onBindViewHolder在該位置方法使得選中或取消選中
最簡單的方法就是使用Model類例如
class ModelDemo{
private boolean isChecked;
}
在onBindViewHolder方法
if(objects(position).isChecked()){
chkbox.setSelected(true);
}else{
chkbox.setSelected(false);
}
這是一個常見的問題,使用setTag()和getTag()來克服這個situation.The下面的代碼會給你一個想法:
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
final int pos = position;
viewHolder.chkSelected.setChecked(yourList.get(position).isSelected());
viewHolder.chkSelected.setTag(yourList.get(position));
viewHolder.chkSelected.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
YourList list = (YoutList) cb.getTag();
list.setSelected(cb.isChecked());
yourList.get(pos).setSelected(cb.isChecked());
Toast.makeText(
v.getContext(),
"Clicked on Checkbox: " + cb.getText() + " is "
+ cb.isChecked(), Toast.LENGTH_LONG).show();
}
});
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public CheckBox chkSelected;
public YourList yourList;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
);
chkSelected = (CheckBox) itemLayoutView
.findViewById(R.id.chkSelected);
}
}
正確,並指向... @GParekar ...按照此答案 –
將保存的狀態保存在保存器(或適配器)中,並將該信息保存在onBindViewHolder中
public void onBindViewHolder(ViewHolder holder){
....
holder.checkbox.setChecked(checked);
}
class ViewHolder extends RecyclerView.ViewHolder {
CheckBox checkbox;
boolean checked = false;
...
ViewHolder(View v){
super(v);
...
checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
if (isChecked){
checked = isChecked;
}
}
});
}
}
你使用ViewHolders嗎?您必須在ViewHolder中存儲每個複選框的狀態 –
請將您的代碼發佈到您嘗試過的地方......對於提示在您的bean類中,使用布爾變量使其getter setter保持其狀態,並在複選框單擊時調用notifydatasetchanged並設置值再次... –
您可以在模型中存儲複選框的檢查條件,並根據位置設置正確的檢查值 –