如何获得 Recyclerview 项目中所有 Edittext 的总和?仅获取屏幕上可见的项目,而不是全部
Posted
技术标签:
【中文标题】如何获得 Recyclerview 项目中所有 Edittext 的总和?仅获取屏幕上可见的项目,而不是全部【英文标题】:How to get sum of all Edittexts of Recyclerview items? Getting only items which are visible on screen, not all 【发布时间】:2016-11-11 06:09:12 【问题描述】:我正在开发一个 android 应用程序,其中我在 Recyclerview 的适配器行中有编辑文本。现在我想得到用户在活动中输入的这些编辑文本值的总和。为此,我使用了以下代码:
int count = listArray.size();
int sum = 0;
for (int i = 0; i < count; i++)
LinearLayout ll = (LinearLayout) mRv_products.getLayoutManager().findViewByPosition(i);
if (ll != null)
Log.v("TAG", "Item considered:" + i);
EditText t = (EditText) ll.findViewById(R.id.edt_quantity_ship_now);
String amount = t.getText().toString().trim();
if (!amount.isEmpty())
sum += Float.parseFloat(amount);
现在的问题是,我只能查看屏幕上可见的项目,而不是全部。例如,如果我在 Recyclerview 中有 10 个项目,而屏幕上只有 3 个项目可见,那么我得到的总和只有 3 个项目在屏幕上可见。
到目前为止,我已经使用其他选项来获取编辑文本:
mRv_products.findViewHolderForAdapterPosition(i);
和
mRv_products.getChildAt(i);
【问题讨论】:
请发布您的全部内容以获得答案 请发表您的全部答案 【参考方案1】:首先在你的适配器类中创建一个字符串数组列表。
private ArrayList<String> list;
在您的适配器构造函数中初始化此列表并创建其 getter 设置器,然后在您的 onBindViewHolder() 方法中添加 editext textchangelistener 并在此侦听器 onchangedtext() 方法中添加以下代码
list.set(position,edittext.getText().toString);
现在您可以通过 getter 获取所有 edittext 值,然后使用字符串生成器组合所有值。
【讨论】:
谢谢,这很有帮助。我已经解决了我的问题。【参考方案2】:这是我要做的:
-
我将为 RecyclerView 项中的每个 editText 添加 textWatcher。
然后会在recyclerView Item模型中声明一个变量
当 editText 中的任何文本发生更改时,将值存储在该项目模型中。
当需要计算总和时,迭代模型列表并计算结果。
任何adapterView 的recyclerView 的主要主题是您的视图可能存在也可能不存在,但您的项目列表始终存在。因此,请始终根据您的要求更新和使用您的项目列表。对你有很大帮助。
希望对您有所帮助。提前致谢。
【讨论】:
谢谢。我也在想同样的事情。似乎没有直接的方法来获取所有适配器项目视图。 您需要始终考虑您的项目列表模型而不是视图。检查我的更新答案 好的@Sayem,我同意。以上是关于如何获得 Recyclerview 项目中所有 Edittext 的总和?仅获取屏幕上可见的项目,而不是全部的主要内容,如果未能解决你的问题,请参考以下文章
如何实现onTextChangedListenerItem来搜索RecyclerView中的项目
单击后退按钮时,在 RecyclerView 中获得相同的项目位置