Я только что исправил ваш код, пожалуйста, проверьте его один раз.
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemHolder> {
private Context context;
private List<Item> listItems;
public ItemAdapter(Context context, List<Item> objects) {
this.context = context;
this.listItems = objects;
}
@NonNull
@Override
public ItemAdapter.ItemHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false);
return new ItemAdapter.ItemHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ItemAdapter.ItemHolder holder, int position) {
Item item = listItems.get(position);
holder.viewName.setText(item.getName());
holder.viewPrice.setText(item.getPrice());
int as = item.getAvailabilityStatus();
if (as == 1) {
holder.viewAvailability.setChecked(true);
} else {
}
}
@Override
public int getItemCount() {
return listItems.size();
}
public class ItemHolder extends RecyclerView.ViewHolder {
private TextView viewName, viewPrice;
private CheckBox viewAvailability;
public ItemHolder(final View itemView) {
super(itemView);
viewName = itemView.findViewById(R.id.viewName);
viewPrice = itemView.findViewById(R.id.viewPrice);
viewAvailability = itemView.findViewById(R.id.viewAvailability);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context,"Clickde"+getAdapterPosition(),Toast.LENGTH_SHORT);
}
});
}
}
}
Возникла какая-то проблема в вашем коде, например, вам нужно надуть данные внутри onBindViewHolder
, и вторая проблема заключается в том, что вывыполняете щелчок на itemView
, что было неправильно, вам нужно выполнить щелчок на представлении, таком как TextView, ImagView ИЛИ LinearLayout, чтобы получить прослушиватель щелчков ... В своем коде вы выполнили щелчок на щелчке представления. Поэтому он получает неправильную позицию