2015-06-05 70 views
0

我想通过Listview循环获取EditText值。列表视图内访问元素给出java.lang.NullPointerException

这是我获得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="" 
     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

是你的自定义XML文件?你有充气吗? – Piyush

+0

这是我的listview xml和im在我唯一的活动中使用它。 在活动im使用公共无效onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); - >主要是我把我的列表视图的地方 –

+1

那么该文件中的列表视图在哪里?只有当您将它们充填到自定义适配器或列表适配器类中时,才能访问此视图。 – Piyush

回答

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()

+0

他已经在这里访问list_v = listView.getChildAt(i);. – Piyush

+0

我明白这个问题是错误的。 – Amsheer