![](/img/trans.png)
[英]How can I use AsyncTask, RecyclerView, and a RecyclerView.Adapter to get images from my phone into my RecyclerView?
[英]How can I check every value in my RecyclerView adapter?
我有一個自定義的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 []。
setOnClickListener
從ViewHolder
並將其移動到您的Adapter's
onBindViewHolder
。 Views
上設置X
時, Views
選中位置的更改是否對顯示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");
}
}
}
請記住要添加一種機制,以防止連續單擊相同的視圖(否則xPositions
數組會越來越大)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.