【发布时间】:2018-12-24 21:00:11
【问题描述】:
RecyclerView OnClick 无法正常工作。它必须将状态更改为true 或false。当我单击第一项时,它会存储 true 并更改文本。但是当我点击其他项目时,它会将状态更改为false,因为第一个项目设置为true,所以文本不会改变。如何分别存储每个项目的状态?
boolean isChange = false;
@Override
public void onBindViewHolder(@NonNull final WindowViewHolder holder, int position) {
Window window = windowList.get(position);
holder.textViewTitle.setText(window.getTitle());
holder.textViewChecked.setText(window.getCheck());
holder.imageView.setImageDrawable(mCtx.getResources().getDrawable(window.getImage()));
////////////////////////////////////////////////
holder.parentLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isChange){
holder.parentLayout.setBackgroundColor(Color.parseColor("#66BB6A"));
holder.textViewChecked.setText("True");
isChange = true;
}
else {
holder.parentLayout.setBackgroundColor(Color.parseColor("#EEEEEE"));
holder.textViewChecked.setText("False");
isChange = false;
}
//Toast.makeText(mCtx, "Clicked", Toast.LENGTH_SHORT).show();
}
});
//////////////////////////////////////
}
【问题讨论】:
-
这就是 RecyclerView 的工作方式,您必须将 isChange 存储在您的 Window 类中,或者如果它仅用于后期目的并且不应存储在那里,请创建例如。 Set 或 HashMap 将包含 id 和当前更改状态,并且 viewholder 将不得不在BindView 上请求此数据
标签: android android-recyclerview boolean