美文网首页自定义控件Android深入UI
RecyclerView嵌套横向滑动的RecyclerView保

RecyclerView嵌套横向滑动的RecyclerView保

作者: 半罐子晃 | 来源:发表于2021-01-15 17:01 被阅读0次
追剧时刻表横向滑动列表.png

layoutManager.onSaveInstanceState()
layoutManager.onRestoreInstanceState()
RecyclerView嵌套横向滑动的RecyclerView保存滑动状态
1.第一层RecyclerView 的 adapter中:
定义一个map集合 记录LayoutManager状态:

private Map<Integer, Parcelable> saveStateMap;

adapter中重写onViewRecycled()方法 view被滑动消失后调用:

@Override
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
    super.onViewRecycled(holder);
    RecyclerView.LayoutManager manager = holder.mRecycleview.getLayoutManager();
            if (manager == null) {
                return;
            }
            Parcelable parcelable = manager.onSaveInstanceState();
            if (parcelable != null) {
                saveStateMap.put(holder.getAdapterPosition(), parcelable);
            }
}

重写 addAll()方法,刷新后清除map存放的信息

@Override
public void addAll(List<DataRadioDramaTimeItem> mList) {
    super.addAll(mList);
    //刷新数据,清除直播甬道的状态信息
    saveStateMap.clear();
    }

在onBindViewHolder中获取存放的信息并恢复状态:

//获取集合中存储的广播剧layoutManager状态
Parcelable parcelable = saveStateMap.get(holder.getAdapterPosition());
    if (parcelable != null) {
    //恢复之前的状态
    layoutManager.onRestoreInstanceState(parcelable);
    }

相关文章

网友评论

    本文标题:RecyclerView嵌套横向滑动的RecyclerView保

    本文链接:https://www.haomeiwen.com/subject/vgewaktx.html