我有一个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监听器,我们可以忽略它 –