Java 如何获取Listview中所有textView的值?

Java 如何获取Listview中所有textView的值?,java,android,listview,nullpointerexception,Java,Android,Listview,Nullpointerexception,我试图在ListView中获取TextView和EditText的所有值,但我遇到了一个奇怪的问题。这是我的示例代码,我删除了EditText以保持简单: lv = (ListView) findViewById(R.id.person_details_lv); Integer x = lv.getAdapter().getCount(); for (int i = 0; i < lv.getAdapter().getCount(); i++) {

我试图在ListView中获取TextView和EditText的所有值,但我遇到了一个奇怪的问题。这是我的示例代码,我删除了EditText以保持简单:

 lv = (ListView) findViewById(R.id.person_details_lv);
        Integer x = lv.getAdapter().getCount();
        for (int i = 0; i < lv.getAdapter().getCount(); i++) {
            View viewRow = lv.getChildAt(i);
            //this next condition get the index of the view visible only
         if (viewRow != null) {
            TextView NameEditText = (TextView) viewRow.findViewById(R.id.detail_name);
            Log.d("hello", "Anything detected onscreen:" + NameEditText.getText().toString() + ");
        }}
lv=(ListView)findViewById(R.id.person\u details\u lv);
整数x=lv.getAdapter().getCount();
对于(int i=0;i
问题是它只返回屏幕上可见的视图。但是,
getCount
计算所有内容。因此,我得到了这个错误

java.lang.NullPointerException


我添加了这个条件:
if(viewRow!=null)
删除错误,但它只显示屏幕上可见的视图。当我滚动listView时,结果也会改变。我要做的是获取listView中TextViewe的值,无论是否显示在屏幕上。

您必须将listView项存储在传递给适配器的列表è›中。您必须存储Edi的值调用ContextChanged时的tText。列表中已存在TextView值。

我认为您应该实现此方法:

 public View getViewByPosition(int pos, ListView listView) {
        final int firstListItemPosition = listView.getFirstVisiblePosition();
        final int lastListItemPosition = firstListItemPosition
                + listView.getChildCount() - 1;

        if (pos < firstListItemPosition || pos > lastListItemPosition) {
            return listView.getAdapter().getView(pos, null, listView);
        } else {
            final int childIndex = pos - firstListItemPosition;
            return listView.getChildAt(childIndex);
        }
    }
与:


就这样!您不需要更改其余的。只要在(viewRow!=null)
的情况下删除此
。我希望它能有所帮助!

因为并非listview项目中的所有视图都是TextView类型,所以当您将它们强制转换时,其中一些视图为null。(将TextView以外的视图强制转换为TextView会生成null对象)

在强制转换之后,只需检查它是否为null,它是文本视图,如果为null,则跳过它


强制转换后添加空条件!

从正在使用的列表中检索值为什么不从适配器中取出元素?请说明如何设置适配器-是否有包含所有数据的列表?
View viewRow = lv.getChildAt(i);
viewRow= getViewByPosition(i, lv);