从列表视图中获取值

时间:2017-05-16 14:45:25

标签: android listview

我正在尝试获取listview的值,该列表视图具有用于放置值的用户的edittext,并在保存信息时获取它们。我知道了;问题是我使用listview.getchildat(i),我只能得到屏幕上可见的孩子,但有时他们超过50个孩子,我不能得到超过8个可见,我想看到如果有任何方法可以获得值不可见。这是我的代码,我只看到可见的孩子:

(function($) {

    $.fn.MyCombobox = function(options) {
        var settings = $.extend({
            selector: '.myselector'
        }, options);
    };

    $.fn.MyCombobox.clear = function() {
        $(settings.selector).find('input').val('');
    };

}(jQuery));

我正在使用带有4列的listview,这是适配器。

for (i = 0; i < feedList.size(); i++) {
            View v = lv.getChildAt(i);
            System.out.println("Posicion i: " + i);
            TextView cobro = null;
            try {

                cobro = (TextView) v.findViewById(R.id.col_cobro);
                System.out.println("CobroValidador: " + cobro.getText().toString());
                sumaValidaCobro += Convert(cobro.getText().toString());
                tstSuma += Convert(cobro.getText().toString());
            } catch (Exception ex) {
                validaCobrado++;
                System.out.println("Valida cobrado: " + validaCobrado);
          //      tstSuma += Convert(cobro.getText().toString());

            }
        }

我需要获取最后一个col的新值,它是一个EditText

FeedList是用于加载列表视图的初始适配器,但用户可以在列表视图中手动输入值。当我保存时我无法使用原件,我需要获取用户输入的所有数据。有没有办法实现这个目标?

问候。

2 个答案:

答案 0 :(得分:0)

ListView具有回收机制,可能会回收invisibel项目并丢失其持有的数据。有关详细信息,请参阅this answer

如果您希望保留EditTextsListView的数据,您可能需要实现自己的适配器,并在对项目进行充气时为每个EditText添加一个监听器。

另外,For a more modern, flexible, and performant approach to displaying lists, use RecyclerView

答案 1 :(得分:0)

我解决了这个问题,从ListView更改为RecycleView,效果非常好