Recyclerview快速滚动项目消失

时间:2015-11-18 16:52:51

标签: android android-recyclerview onscroll fastscroll

我正在使用带有recyclerview的GridLayoutManager,当我快速enter image description here向下滚动时,四个可见网格项目中的一个项目(右下角)向下移动,

我正在使用本教程实现快速滚动和快速滚动指示器here

2 个答案:

答案 0 :(得分:3)

猜猜我找到了解决方案。

看起来当再循环视图再次附加到窗口时,它们的状态将更改为不可见(IDK为什么)。我们所要做的就是让它再次可见。

幸运的是,RecyclerView.Adapter类有一个方法来处理视图附加或重新附加到RecyclerView的时间。

class ViewHolder extends RecyclerView.ViewHolder{
    TextView tv_1;
    TextView tv_2;
    ImageView iv;
    ImageButton bt;

    View root;

    ViewHolder(View v){
        super(v);

        //setIsRecyclable(false);     //to prevent views from getting deleted. :-(

        tv_1=(TextView)v.findViewById(R.id.aral_tv_title);
        tv_2=(TextView)v.findViewById(R.id.aral_tv_stitle);
        iv=(ImageView)v.findViewById(R.id.aral_iv);
        bt=(ImageButton)v.findViewById(R.id.aral_bt_more);

        tv_1.setTypeface(WorkActivity.mainTF);
        tv_2.setTypeface(WorkActivity.mainTF);

        root=v;
    }
}

我的ViewHolder类

{{1}}

希望这可以帮助你。

答案 1 :(得分:2)

对于每个if,应该有else

例如: 如果您有一个默认情况下在XML文件中可见的视图,但您要更改其在代码中的可见性,则必须提供else否则RecyclerView将重新使用视图并显示具有不同数据的重用视图。

if(somethingIsTrue) {
 view.setVisibility(View.GONE);
} else {
 view.setVisibility(View.VISIBLE);
}