访问Listview中的元素会产生java.lang.NullPointerException

时间:2015-06-05 13:12:14

标签: android

我尝试循环Listview以获取EditText值。

这是获取Textview值的代码:

View list_v = null;
    ListView listView = (ListView) findViewById(R.id.listViewMain);

    ArrayList<String> listitems = new ArrayList<String>();
    EditText et;

    for (int i = 0; i < listView.getCount(); i++) {
        list_v = listView.getChildAt(i);

        et = (EditText) list_v.findViewById(R.id.editText_a);
        listitems.add(et.getText().toString());

    }

和我的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="vertical" >

    <LinearLayout 
    android:id="@+id/LinearLayout02" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
     >

       <TextView
        android:id="@+id/code"
        android:layout_width="0dp"
        android:textColor="@android:color/black"
        android:layout_height="wrap_content"
        android:textSize="15sp" 
        android:layout_weight="1"

        android:gravity="center"/>
        <TextView
        android:id="@+id/kcode_lbl"
        android:layout_width="0dp"
        android:textColor="@android:color/black"
        android:layout_height="wrap_content"
        android:textSize="15sp" 
        android:layout_weight="1"/>
    </LinearLayout>

        <LinearLayout 
    android:id="@+id/LinearLayout03" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent"
     >
        <EditText
        android:id="@+id/editText_a"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:textColor="@android:color/black"
        android:ems="10" 
        android:layout_weight="1" >        
        </EditText>
        <TextView
        android:id="@+id/editText_lbl"
        android:layout_width="0dp"
        android:textColor="@android:color/black"
        android:layout_height="wrap_content"
        android:textSize="15dp" 
        android:layout_weight="1"/>
        <TextView
        android:id="@+id/date_value"
        android:layout_width="0dp"
        android:textColor="@android:color/black"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
        <TextView
        android:id="@+id/date_lbl"
        android:layout_width="0dp"
        android:textColor="@android:color/black"
        android:layout_height="wrap_content"
        android:textSize="15sp" 
        android:layout_weight="1"/>
     </LinearLayout>

</LinearLayout>

我的main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingTop="5dp">

<LinearLayout 
    android:id="@+id/LinearLayout02" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:paddingBottom="10dp">

    <AutoCompleteTextView 
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/code_txt"
        android:layout_weight="0.25" 
        android:digits="0123456789" 
        android:inputType="number"
        android:focusable="true">
        <requestFocus />
        </AutoCompleteTextView>

</LinearLayout>
    <ListView
        android:id="@+id/listViewMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:descendantFocusability="beforeDescendants"
        >
    </ListView>
</LinearLayout>

问题是当我在这行代码上运行它给出java.lang.NullPointerException的代码时:

list_v.findViewById(R.id.editText_a)

我是否应该遍历LinearLayout

1 个答案:

答案 0 :(得分:1)

请试试这个

for (int i = 0; i < listView.getChildCount(); i++) {
        list_v = listView.getChildAt(i);

        et = (EditText) list_v.findViewById(R.id.editText_a);
        listitems.add(et.getText().toString());

    }

getCount()替换为getChildCount()