【发布时间】:2016-09-03 05:04:29
【问题描述】:
我有一个 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 值更新所有 CardViews 的所有 TextViews。基本上,我希望 CardView 的 TextView 填充 CardNum 整数的值在创建每个单独的 CardView 时。由于 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()));
}
【问题讨论】:
标签: android integer android-recyclerview