Android RecyclerView显示数据甚至不存在

时间:2017-07-15 14:34:38

标签: android android-recyclerview adapter picasso

我有一个包含30行数据的RecyclerView。一些行有我得到的图像并用毕加索显示它。 问题是,图像框每8行重复一次,即使该行没有图像。 我检查如果图像为空则不显示,但显示它。

here is an image about it

JobAdapter.java
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
            final MyHolder myHolder = (MyHolder) holder;
            JobClass current=data.get(position);
            myHolder.name.setText(current.title);
            myHolder.manager.setText(current.manager);
            String phone= (String) new KerashDao(context).JobinfoGetValue(current.job_id.toString(),new KerashDao(context).SettingGetValue("phone").toString());
            myHolder.phonecall.setText(phone.toString());

            try {
                if(!current.image.isEmpty()) {
                    Picasso.with(context)
                        .load(current.image)
                        .placeholder(R.drawable.icn_loading)
                        .into(myHolder.picture, new Callback() {
                            @Override
                            public void onSuccess() {myHolder.picture.setVisibility(View.VISIBLE);}
                            @Override
                            public void onError() {
                                myHolder.picture.setVisibility(View.GONE);
                            }
                        });
                }
            }catch (Exception ex){Log.i("JobAdapter2",ex.getMessage().toString()+"");}

        }

1 个答案:

答案 0 :(得分:0)

RecyclerView 回收代表每一行的视图。这意味着一旦滚动离开屏幕,给定视图将被另一行重用。由于您在某个时刻将图像加载到该视图中,因此它会一直存在,直到您清除它为止。

在您的else语句中添加if(!current.image.isEmpty())条款,清除ImageView中的图片。