我有一个int变量,显示在RecyclerView列表中的CardView上。该值显示为TextView。一旦该值用于填充OnBindViewHolder中的TextView,如何冻结/永久保存该值,以便下次在创建下一个CardView时运行onBondViewHolder时它不会更改?
“cardNumsTotal”是在ViewHolder中创建的TextView。
“dblist”是用于在RecyclerView中显示模型数据的ArrayList。
“getCardNum”是来自SQLite数据库的整数数据的getter。它是一个计数器,因此每次为RecyclerView列表创建一个新的CardView时,CardNum会增加+1。
在代码下面,我展示了一些我得到的错误示例以及我想要实现的正确示例。我已经在ViewHolder和OnBindViewholder的TextView上尝试了setFreezesText(true)而没有运气。当前错误是onBindViewHolder正在使用CardNum的当前值更新所有CardView的所有TextView。基本上我希望CardView的TextView在每个单独的CardView创建时使用CardNum整数的值填充。由于CardNum是一个计数器,我应该看到CardView#正在连续形成:1,2,3,4,5 ... CardView是从RecyclerView列表顶部的最新订购到最旧的。因此,如果创建了五个CardView,我应该在顶部看到Card#5,然后是4,3,2,1。
Adapter.java
...
public class ListViewHolder extends RecyclerView.ViewHolder {
TextView cardNumstotal;
public ListViewHolder(View itemView) {
super(itemView);
cardNumstotal = (TextView)itemView.findViewById(R.id.cardNumstotal);
}
}
...
@Override
public void onBindViewHolder(final ListViewHolder holder, final int position) {
holder.cardNumstotal.setText(String.valueOf(dbList.get(position).getCardnum()));
}
答案 0 :(得分:0)
这个怎么样?
private boolean updated = false;
@Override
public void onBindViewHolder(final ListViewHolder holder, final int position) {
if(updated) return;
holder.cardNumstotal.setText(String.valueOf(dbList.get(position).getCardnum()));
updated = true;
}