如何获得 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 中获得相同的项目位置

当 Recyclerview 在 NestedScrollview 中时,如何避免绑定所有项目?

RecyclerView 项目失去焦点

带有recyclerview的双打印地理查询

将RecyclerView项目更改为高于所有其他项目