gpt4 book ai didi

java - 如何检查我的 RecyclerView 适配器中的每个值?

转载 作者:行者123 更新时间:2023-11-29 19:14:46 26 4
gpt4 key购买 nike

我有一个自定义的 RecyclerView 适配器,它是我从包含 9 个固定数据点的 onCreate 方法实例化的:

    GridRecyclerAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

...

/* Dummy cell data */
String[] data = {"", "", "", "", "", "", "", "", ""};

...

/* Init RecyclerView */
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
int numColumns = 3;
recyclerView.setLayoutManager(new GridLayoutManager(this, numColumns));
adapter = new GridRecyclerAdapter(this, data, numColumns, player1, player2);
adapter.setClickListener(this);
recyclerView.setAdapter(adapter);
}

我的 ViewHolder 中的 clickListener 在单击时将文本设置为“X”。

    class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView cellTextView;

ViewHolder(View itemView) {
super(itemView);
cellTextView = (TextView) itemView.findViewById(R.id.textView);
itemView.setOnClickListener(v -> {
/* Set cell TextView to "X" */
cellTextView.setText("X");
});
}
}

在每次点击时,我想检查 itemViews 的特定组合是否具有特定值。例如,如果位置为 1、2 和 3 的 itemView 的 TextView 等于“X”,则显示 AlertDialog。我想我应该能够在每次点击时修改传入构造函数的 String[]。

最佳答案

  1. 从您的 ViewHolder 中提取 setOnClickListener 并将其移动到您的 Adapter 的 onBindViewHolder
  2. 以某种形式(例如整数数组)保留选中的位置
  3. 当您在其中一个 Views 上设置 X 时,查看选中位置的更改是否对显示您的 AlertDialog 有效

public class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ViewHolder> {

List<Integer> xPositions = new ArrayList<>();

// ... all the needed stuff.

@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.itemView.setOnClickListener(v -> {
holder.showX();
xPositions.add(holder.getAdapterPosition());
checkIfShouldShowAlert();
});
}

void checkIfShouldShowAlert() {
// do your checks on xPositions and show the AlertDialog if needed
}

public static class ViewHolder extends RecyclerView.ViewHolder {
TextView cellTextView;

ViewHolder(View itemView) {
super(itemView);
cellTextView = (TextView) itemView.findViewById(R.id.textView);
}

void showX(){
cellTextView.setText("X");
}
}
}

请记住添加一个机制来防止连续点击相同的 View (否则 xPositions 数组会越来越大)。

关于java - 如何检查我的 RecyclerView 适配器中的每个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43982355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com