android recycleView局部刷新的选择

来源:互联网 发布:远程传输软件 编辑:程序博客网 时间:2024/06/01 09:10

android中recycleview的运用随着android系统的更新以及手机硬件的更新迭代,已经越来越广泛。

而其中的局部刷新便是许多需求都要求实现的基础功能。

那么对于如何局部刷新而言。方式一般有3种。


1、直接notifyDataSetChanged()。

但花销太大,不建议。


2、notifyItemChanged(int position)。

非常可行。可以在平板上或者手机上直接刷新部分内容。

但对有焦点需求的机顶盒来说不可行,原因在于一旦刷新,焦点会失控乱飞。


3、根据getTag的方式获取并刷新这个view,做法如下:

        if (mFocusRecyclerView != null) {            int firstPosition = mLinearLayoutManager.findFirstVisibleItemPosition();            int lastPosition = mLinearLayoutManager.findLastVisibleItemPosition();            View childrenView;            for (int i = firstPosition; i <= lastPosition; i++) {                childrenView = mLinearLayoutManager.findViewByPosition(i);                if (childrenView != null && childrenView.getTag() != null) {                    SpecialAdapter.SpecialHolder holder = (SpecialAdapter.SpecialHolder) childrenView.getTag();                    if (holder!=null&&holder.getCurrentPosition() == position) {                        holder.changeViewState(holder.getCurrentPosition());                        break;                    }                }            }        };
该方式对于第二种方法而言,可以避免了焦点乱飞的问题。只需要在holder中赋予他们位置的值,拿出来比较即可。


谢谢您的观看。

0 0
原创粉丝点击