2015-06-05 27 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