kta*_*mas 3 data-binding android
我正在使用Android数据绑定RecyclerView.Adapter.上Adapter的onCreateViewHolder我打电话:
public TransfersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new MyViewHolder(
ListItemMyDataBinding.inflate(
LayoutInflater.from(parent.getContext()),
parent,
false));
}
Run Code Online (Sandbox Code Playgroud)
所以ListItemMyDataBinding是一个代表list_item_my_data.xml.
Adapter的onBindViewHolder看起来是这样的:
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
MyData myData = mDataList.get(position);
holder.render(myData);
....
}
Run Code Online (Sandbox Code Playgroud)
最后,render我的功能MyViewHolder看起来像这样:
public void render(MyData data, boolean expand) {
mBinding.setData(data); // mBinding is an instance of ListItemMyDataBinding
}
Run Code Online (Sandbox Code Playgroud)
在我的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}" />
Run Code Online (Sandbox Code Playgroud)
我在一个可搜索的列表中使用这种方法,所以我在列表顶部有一个搜索字段.一旦用户输入新的搜索词,列表就会被清除并通知有关更改,一旦响应从服务器返回,我将所有结果添加到列表中并再次通知更改.
最后问题是发生以下情况:
据我所知,这是因为Views被重用,作为第一步,适配器意识到它可以重用一个视图并显示它,并且只在(几分之一秒)后应用布局中的更改(通过数据绑定),这就是为什么我看到旧的价值观闪烁的原因.这很烦人.如果在函数中render我手动为视图设置默认值(例如setText("")在TextViews上),那么我看不到闪烁效果,但这不是我想要的解决方案.
你有什么建议我怎么能很好地避免这种"眨眼/滞后"效应,我做错了什么?
谢谢
呼叫
mBinding.executePendingBindings ();
Run Code Online (Sandbox Code Playgroud)
刚过 mBinding.setData(data);
| 归档时间: |
|
| 查看次数: |
1357 次 |
| 最近记录: |