Android:如何在CardView / RecyclerView中使整数变量的值变为固定/永久?

时间:2016-05-08 14:29:19

标签: android integer android-recyclerview

我有一个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()));

}

enter image description here

1 个答案:

答案 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;

}