gpt4 book ai didi

android - 使用 DataBinding 在 RecyclerView 项目中绑定(bind)图像时闪烁图像

转载 作者:行者123 更新时间:2023-11-29 14:35:38 29 4
gpt4 key购买 nike

我使用 DataBinding 像下面的代码一样在 RecyclerView 项中绑定(bind)图像然后当我重新加载所有 RecyclerView 时它会使图像闪烁(通过 notifyDataSetChange)
如果我不使用 DataBinding 并且只是正常设置图像,则图像不会闪烁我对 DataBinding 做错了什么?任何帮助或建议将不胜感激

我的 RecyclerView 适配器代码

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
private Context mContext;
private List<String> list;
public static class MyViewHolder extends RecyclerView.ViewHolder {
ItemBinding mBinding;
public MyViewHolder(ItemBinding mBinding) {
super(mBinding.getRoot());
this.mBinding = mBinding;
mBinding.setViewHolder(this);
}

public int getSrc(){
return R.drawable.ic_launcher;
}
}
public RecyclerViewAdapter(Context context, List<String> moviesList) {
this.mContext = context;
this.list = moviesList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ItemBinding binding =
DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.item,
parent, false);
return new MyViewHolder(binding);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return list.size();
}
@BindingAdapter({ "src" })
public static void setImageSrc(ImageView view, int src) {
if (src != -1) view.setImageResource(src);
}
}

我的项目xml

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<data>
<variable
name="viewHolder"
type="example.toong.testreloadimageusingglidebynotifydatasetchangewithdatabinding.RecyclerViewAdapter.MyViewHolder"
/>
</data>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_holding_three_gradient_layer"
android:orientation="vertical">

<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="100dp"
app:src="@{viewHolder.src}"
/>

</LinearLayout>
</layout>

enter image description here

演示项目:https://drive.google.com/file/d/0B_poNaia6t8kVlBfSGJ4QU9uZHc/view

最佳答案

我认为您缺少的步骤是您必须使用 executePendingBindings():

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
// Normally, you'd do the binding here, but yours is static.
holder.mBinding.executePendingBindings();
}

有关此主题的文章: https://medium.com/google-developers/android-data-binding-recyclerview-db7c40d9f0e4#.24tuxwvsh

关于android - 使用 DataBinding 在 RecyclerView 项目中绑定(bind)图像时闪烁图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42128051/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com