【问题标题】:Android: how do I make the value of an integer variable become fixed/permanent in a CardView/RecyclerView?Android:如何使整数变量的值在 CardView/RecyclerView 中变得固定/永久?
【发布时间】: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


    【解决方案1】:

    这个怎么样?

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

    【讨论】:

    • 这是否意味着:如果更新则转换为布尔值(即固定)?
    • 不工作。先前 CardViews 的 TextView 是空白的。最近创建的 CardView 的 TextView 正在正确填充。
    • 我认为上面的布尔值只是有助于在 TextView 上显示当前 Cardnum 总数,但之前的 TextViews 会被忽略。
    • 我也在 TextView 上尝试 setFreezesText(true) 但到目前为止没有运气。
    • 好吧,我误解了你在做什么。如果卡得到错误的值,dbList.get(position).getCardnum() 一定有问题。
    猜你喜欢
    • 2013-02-18
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2019-12-21
    相关资源
    最近更新 更多