一般来说,有问题。我有一个带有嵌套 CardView 布局的 RecyclerView。当一个按钮被点击时,由于显而易见的原因,几个按钮被同时按下(据我了解 position )。如何解决这个问题,让它在你点击时 - 按下一个按钮?我在google里挖了,没挖出来,看了文档,但是我的水平不是很高,所以不能下定论。任何人都可以帮忙吗?解释并清楚地展示如何正确地做,告诉孩子为什么以及如何做?我的巨大优势。代码结构:(一切都保持在最低限度,睁大眼睛:))
@Override
public CardViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
Context context = parent.getContext();
int layoutIdListItem = R.layout.fragment_card;
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(layoutIdListItem, parent, false); // Подключение к card
CardViewHolder cardViewHolder = new CardViewHolder(view);
init();
return cardViewHolder;
}
private void init() {
//retrofit // это просто масиив инициализации, чтобы красиво все было
}
@Override
public void onBindViewHolder(@NonNull CardViewHolder holder, int position) {
if (partnerArrayList.size() == numberItems) { // условие , если true , то изменяй CardView
holder.bind(partnerArrayList.get(position)); // переход в изменение CardView
}
}
@Override
public int getItemCount() {
return numberItems; // сколько элементов cardView?
}
class CardViewHolder extends RecyclerView.ViewHolder {
private Button favorite; // Вот допустим кнопочка, которую нужны клацать
public CardViewHolder(@NonNull View itemView) {
favorite = itemView.findViewById(R.id.favorite);
void bind(final Partner partner) {
favorite.setOnClickListener(new View.OnClickListener() { // и вот тут я кнопочку клацаю
@Override // но кнопочка клацается на всех CardView
public void onClick(View v) { // Укажите пожалуйста прям тут, что делать :)
StateApp.setFavorite(partner.getId());
favorite.setBackgroundResource(R.drawable.favorite_star_on_click);
感谢朋友们的回答,我将非常感谢您在我如此困难的时刻提供的帮助:(
第一的。RecyclerView 本身不应该存储任何逻辑,它唯一应该能够做的就是显示你传递给它的内容,这是它的职责范围结束的地方。
第二。你的适配器真的是用一种非常奇怪的方式编写的,我建议你从头开始重写它,如下所示:
OnItemClickListener 接口。它必须由您的适配器所在的视图实现。
RecyclerView 的任何更新都应该使用该方法进行
update()