Ich habe eine RecyclerView und ich habe 9 Elemente darin und wenn ich auf ein Element klicken, sollte es ausgewählt werden, aber wenn ich ein anderes Element auswählen sollte es ausgewählt werden und das andere Element sollte automatisch nicht ausgewählt werden.RecyclerView-Adapter klicken nicht funktioniert nach Bedarf
Was mache ich falsch, jede Hilfe ist bemerkenswert, danke.
Hier ist mein Adapter Code
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);
}
}
}
ist es die BottomSheetDialogFragment Zuhörer, können wir es für jetzt ignorieren –