我尝试循环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
?
答案 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()