当用户单击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
创建的某些ViewHolder)已被重用。
因此,您要做的是记住被点击的位置(例如,通过SparseBooleanArray),并在onBindViewHolder
中检查该 View 是否应该可见(先前被单击)。
您可以在this StackOverflow帖子中找到SparseBooleanArray
的基本用法示例
关于java - RecyclerView的项目显示不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36824121/