RecyclerView仅加载一次数据

时间:2018-10-02 05:24:48

标签: java android android-recyclerview recycler-adapter

我注意到,每次我上下滚动RecyclerView时,都会调用“ onBindViewHolder”,并且我的数据(Textviews和Imageviews)将在后台刷新/重新加载。

例如,有没有一种方法可以告诉RecylerView在滚动时不会刷新或重新加载特定的textview?有什么需要我覆盖的方法吗?

4 个答案:

答案 0 :(得分:0)

RecyclerView仅创建所需的视图来填满整个屏幕,顾名思义,它回收或重用通过调用onBindViewHolder创建的视图,因此行为很漂亮正常。

如果您需要不重新使用特定职位,请查看upstream documentation问题。

答案 1 :(得分:0)

使用SrcollDisabled RecyclerView

public class ScrollDisabledRecyclerView extends RecyclerView {
    public ScrollDisabledRecyclerView(Context context) {
        super(context);
    }

    public ScrollDisabledRecyclerView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public ScrollDisabledRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean onTouchEvent(MotionEvent e) {
        return false;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent e) {
        return false;
    }
}

像这样在xml内使用

<android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
 <com....ScrollDisabledRecyclerView
                            android:id="@+id/recyclerView"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content" />
</android.support.v4.widget.NestedScrollView>

答案 2 :(得分:0)

我最终通过实现一些逻辑来检查和控制滚动时是否存在值来实现自己的目标。我找不到其他直接的方法,因为正如@Mohammad Tabbara所说,这就是RecyclerView的设计工作方式。

答案 3 :(得分:-1)

尝试

yourAdapter adapter = new yourAdapter( , , );
adapter.notifyDataSetChanged();