渲染时Android数据绑定滞后

我正在使用 Android数据绑定与RecyclerView.Adapter.
在适配器的onCreateViewHolder上我调用

public TransfersViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
    return new MyViewHolder(
                ListItemmyDataBinding.inflate(
                        LayoutInflater.from(parent.getContext()),parent,false));
}

所以ListItemmyDataBinding是list_item_my_data.xml的表示.

适配器的onBindViewHolder看起来像这样:

@Override
public void onBindViewHolder(final MyViewHolder holder,int position) {
    MyData myData = mDataList.get(position);

    holder.render(myData);

    ....
}

最后,我的MyViewHolder的渲染功能如下所示:

public void render(MyData data,boolean expand) {
    mBinding.setData(data); // mBinding is an instance of ListItemmyDataBinding
}

在我的xmls中有一些数据绑定:

<data>

    <import type="com.example.MyData" />

    <variable
        name="data"
        type="MyData" />
</data>

...

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@{data.userName}" />

我在一个搜索的列表中使用这种方法,所以我在列表顶部有一个搜索字段.一旦用户输入新的搜索词,列表就会被清除并通知有关更改,一旦响应从服务器返回,我将所有结果添加到列表中并再次通知更改.

最后问题是发生以下情况:

>输入新的搜索词:清除列表,删除项目[确定]
>响应从服务器返回[确定]
>我将所有项目添加到列表中并通知适配器有关更改[确定]
>在一小段时间内,旧值出现在列表中,列表项将仅在[NOT]之后使用新值更新

据我所知,这是因为视图被重用,作为第一步,适配器意识到它可以重用视图并显示它,并且在应用布局中的更改(通过数据绑定)之后(仅几分之一秒),这就是为什么我看到旧的价值观闪烁的原因.这很烦人.
如果在函数渲染中我手动设置视图的认值(例如TextViews上的setText(“”)),那么我看不到闪烁效果,但这不是我想要的解决方案.

你有什么建议我怎么能很好地避免这种“眨眼/滞后”效应,我做错了什么?

谢谢

解决方法

呼叫

mBinding.executePendingBindings ();

就在mBinding.setData(data)之后;

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...