android - RecyclerView 适配器显示错误的图像

标签 android android-layout android-xml android-recyclerview

我有一个看起来像这样的 RecyclerView 适配器:

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {

    private static Context context;
    private List<Message> mDataset;

    public RecyclerAdapter(Context context, List<Message> myDataset) {
        this.context = context;
        this.mDataset = myDataset;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener, View.OnClickListener {
        public TextView title;
        public LinearLayout placeholder;

        public ViewHolder(View view) {
            super(view);
            view.setOnCreateContextMenuListener(this);

            title = (TextView) view.findViewById(R.id.title);
            placeholder = (LinearLayout) view.findViewById(R.id.placeholder);
        }
    }

    @Override
    public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.message_layout, parent, false);
        ViewHolder vh = new ViewHolder((LinearLayout) view);

        return vh;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Message item = mDataset.get(position);

        holder.title.setText(item.getTitle());

        int numImages = item.getImages().size();

        if (numImages > 0) {
            View test = LayoutInflater.from(holder.placeholder.getContext()).inflate(R.layout.images, holder.placeholder, false);
            ImageView image = (ImageView) test.findViewById(R.id.image);
            Glide.with(context)
                .load("http://www.website.com/test.png")
                .fitCenter()
                .into(image);
            holder.placeholder.addView(test);
        }
    }

    @Override
    public int getItemCount() {
        return mDataset.size();
    }

}

但是,RecyclerView 中的某些项目在不应该显示的情况下显示图像。我怎样才能阻止这种情况发生?

我在 onBindViewHolder() 中检查了 if (numImages > 0) {,但这仍然没有阻止它显示不应该有图像的项目的图像.

最佳答案

你应该设置imageView.setImageDrawable (null)onBindViewHolder() 中使用 glide 设置图像之前。

将 image drawable 设置为 null 解决了这个问题。

希望对您有所帮助!

关于android - RecyclerView 适配器显示错误的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33835867/

相关文章:

android - 如何将额外数据传递给 fragment 类以及如何在 fragment 中获取该数据?

Android:具有 match_parent 的 LinearLayout 与父级不匹配

android - 如何从一个地方更改整个应用程序中的默认ClickSound

android - 如何在 Android 上使用寻址和验证 PostCodeAnywhere?

android - 在 RecyclerView 上设置最大高度

java - Android 在推送通知上设置 RTL 支持

android - 如何将 id 添加到 public.xml?

android - 如何更改操作栏切换颜色? - 安卓

java - HttpRequestException : Could Not Head warning in Android Studio 3. 1.1(但同步成功)

android - 我怎样才能访问 View 的状态?