java - RecyclerView 的项目显示不正确

标签 java android android-recyclerview

在我的 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/

相关文章:

android - 在 RecyclerView 中显示带有视频文件的文件夹

java - 关于 tomcat 服务 webapps 和 web-inf 的问题

java - HTML-PD4ML Java

Android:HandlerThread 启动后会发生什么?

java - 如何将 TextView 与 EditText 堆叠在同一行(堆叠几行)

android - RemoteViews 支持的方法

java - 如何使用<表单:input> for NOT form object

java - 如何执行动画listview滚动或限制滚动速度

android - 一个 fragment 中的多个 RecyclerView

java - 如何在 Android Studio 的 Recyclerview 中显示从 API 获取的 JPG 图像?