gpt4 book ai didi

android - 以编程方式在 recyclerview onbindView 适配器中添加 textview

转载 作者:行者123 更新时间:2023-11-29 17:11:39 25 4
gpt4 key购买 nike

在滚动 RecyclerView 时,TextView 中的数据会发生变化,即使数组 logtime.get(i).getTime() 中的数据也会发生变化> 不会改变。只有当我们将数据放入动态生成的 textview 中时,它才会改变。

public void onBindViewHolder(PunchCardViewHolder holder, int position) {

PunchCardReport punchCardReport = punchCardReports.get(position);
holder.sNumber.setText(punchCardReport.getmSNumber());
holder.logDate.setText(punchCardReport.getmLogDate());
StringTokenizer stringTokenizer = new StringTokenizer(punchCardReport.getmLogTime(), ",");
List<LogTime> logtime = punchCardReport.getmLogTimeList();
for (int i = 0; i < logtime.size(); i++) {
Log.d(TAG, "onBindViewHolder: "+logtime.get(i).getTime());

}
LinearLayout.LayoutParams dim = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
for (int i = 0; i < logtime.size(); i++) {

TextView textView=new TextView(mContext);
textView.setLayoutParams(dim);
textView.setText(logtime.get(i).getTime());//the problem is here when we put data inside textview
holder.logTime.addView(textView);
}

}
@Override
public int getItemCount () {
return punchCardReports.size();
}

最佳答案

您的设计完全错误。您在每次调用 onBindViewHolder() 时都在创建新的 TextView,这意味着当您滚动回到 View 时, 的新列表TextView 已创建,所以现在您有两组 TextView,一组来自上次调用,一组来自现在(继续滚动,将会有更多额外的 TextView附件)。

创建新 View 应该在 onCreateViewHolder() 中完成。您出现此行为的原因可能是因为 RecyclerView 使用了 Scrapped Views,这意味着它重用了之前创建的 View。从而提高性能(因为不需要新的内存分配)。如果您正在寻找嵌套的 RecyclerView,那么请改用它。

关于android - 以编程方式在 recyclerview onbindView 适配器中添加 textview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40240186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com