我有一個RecyclerView,我有9個項目裏面,當我點擊一個項目它應該被選中,但是當我選擇另一個項目它應該被選中,另一個項目應該自動取消選擇。RecyclerView適配器的項目點擊不工作根據需要
我在做什麼錯,任何幫助是明顯的謝謝。
這裏是我的適配器的代碼
class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.DataViewHolder> {
private final int mItemCount;
List<ServicesMenuModel> mServiceList;
SparseBooleanArray mArray = new SparseBooleanArray();
int pos;
ItemAdapter(int itemCount, List<ServicesMenuModel> mServiceList) {
mItemCount = itemCount;
this.mServiceList = mServiceList;
}
@Override
public DataViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_item_list_dialog_item6, parent, false);
return new DataViewHolder(v);
}
public void changeAt(int position, DataViewHolder holder) {
mArray.delete(position);
notifyItemChanged(position);
holder.mServiceText.setSelected(false);
}
@Override
public void onBindViewHolder(final DataViewHolder holder, int position) {
holder.mServiceText.setText(mServiceList.get(position).getMenuText());
holder.mServiceText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.mServiceText.setSelected(mArray.get(holder.getAdapterPosition(), false));
pos = holder.getAdapterPosition();
//When same item is clicked
if (mArray.get(holder.getAdapterPosition(), false)) {
mArray.delete(pos);
holder.mServiceText.setSelected(false);
} else
//When new item is selected
{
for (int i = 0; i < mServiceList.size(); i++) {
changeAt(i, holder);//checking to remove other items
}
mArray.put(holder.getAdapterPosition(), true);
holder.mServiceText.setSelected(true);
}
if (mListener != null) {
mListener.onItemClicked(holder.getAdapterPosition());
dismiss();
}
}
});
}
@Override
public int getItemCount() {
return mServiceList.size();
}
class DataViewHolder extends RecyclerView.ViewHolder {
TextView mServiceText;
DataViewHolder(View v) {
super(v);
mServiceText = (TextView) v.findViewById(R.id.text);
}
}
}
這是BottomSheetDialogFragment監聽器,我們可以忽略它 –