在我的 onBindViewHolder
我的RecyclerView.Adapter<SearchAdapter.ViewHolder>
当用户点击 cardview
一个按钮变得可见。但是当我滚动 recyclerview 时,其他一些项目按钮也显示为可见。为什么会这样?
这是我的代码:
@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int position) {
viewHolder.card.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (viewHolder.content_layout.getVisibility() == View.VISIBLE) {
viewHolder.content_layout.setVisibility(View.GONE);
viewHolder.address.setMaxLines(2);
viewHolder.attribute.setMaxLines(2);
} else {
viewHolder.content_layout.setVisibility(View.VISIBLE);
viewHolder.address.setMaxLines(8);
viewHolder.attribute.setMaxLines(8);
}
}
});
...
}
最佳答案
一旦您开始向下滚动列表,您的 View 就会被回收。这意味着之前膨胀的 ViewHolder(一些在 onCreateViewHolder
中创建的)被重新使用。
所以你要做的是记住点击的位置(例如通过 SparseBooleanArray )并检查 onBindViewHolder
View 是否应该可见(之前点击)。
您可以在 this StackOverflow 中找到 SparseBooleanArray
的基本用法示例发布
关于java - RecyclerView 的项目显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36824121/