首页 文章

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

提问于
浏览
0

我有一个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的 current 值更新所有CardView的所有TextView . 基本上我希望CardView的TextView填充CardNum整数 at the time that each individual CardView is created 的值 . 由于CardNum是一个计数器,我应该看到CardView#'s being formed in succession: 1,2,3,4,5... The 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

    这个怎么样?

    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;
    
    }
    

相关问题