0
recyclerview有沒有一種方法,使RecyclerView有對號像的ListView?我看到的大部分示例都沒有類似複選標記的功能。當用戶點擊列表中的某個項目時,他們會突出顯示該行,這不是我所需要的行爲。請提出任何建議?由於添加複選標記到安卓
recyclerview有沒有一種方法,使RecyclerView有對號像的ListView?我看到的大部分示例都沒有類似複選標記的功能。當用戶點擊列表中的某個項目時,他們會突出顯示該行,這不是我所需要的行爲。請提出任何建議?由於添加複選標記到安卓
我會做這樣的:
首先,有您的適配器SparseBooleanArray您在構造函數初始化。 SparseBooleanArrays將整數映射到布爾值,以便您可以知道哪個視圖已被選中,哪個沒有。
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.DataViewHolder> {
private SparseBooleanArray selectedItems;
public RecyclerAdapter(Context context, List<Data> dataList){
selectedItems = new SparseBooleanArray();
}
的ViewHolder實現ClickListener:
public class DataViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
public DataViewHolder(View itemView) {
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// the condition below returns false if the item isn't in the array.
if (selectedItems.get(getPosition(), false)) {
//if it is in the array we delete it. So clicking a second time on an item will uncheck it.
selectedItems.delete(getPosition());
((CheckBox)v.findViewById(R.id.checkbox)).setChecked(selectedItems.get(position, false));
}
else {
selectedItems.put(getPosition(), true);
// here get a ref to the view checkbox and *check* it
((CheckBox)viewHolder.itemView.findViewById(R.id.checkbox)).setChecked(true);
}
}
}
在這一點上,你將有一個選中的複選框倍數項目在recyclerview因爲觀點被回收。爲了防止這一點,只有你想進行檢查更改onBindViewHolder方法,因此檢查或在綁定時取消選中的複選框的複選框:
@Override
public void onBindViewHolder(DataViewHolder viewHolder, int position) {
((CheckBox)viewHolder.itemView.findViewById(R.id.checkbox)).setChecked(selectedItems.get(position, false));
}
我沒有測試,但我已經幾乎相同的代碼和有用。如果你有問題,請告訴我。
複選框的複選標記? – Raghunandan
對於遲迴復@Raghunandan感到抱歉。是的含義複選框 – user3137376
除了使用recyclerview之外,它與listview相同。 – Raghunandan