2013-07-22 98 views
0

應用程序崩潰拋出null指針異常在行RoomList.getAdapter().getCount()。 我需要從listview中獲取每個編輯文本值,並在其上應用一些計算,搜索各種帖子後,我發現了這個解決方案,但它不能正常工作。listview.getCount()方法的NullPointerException異常

RoomList = (ListView) vi.findViewById(R.id.list2); 
for (int i = 0; i < RoomList.getAdapter().getCount(); i++) { 
     View view = RoomList.getChildAt(i); 
     EditText edit = (EditText) view.findViewById(R.id.editRoom); 
     Log.d("value from each edit text", edit.getText().toString()); 
} 

回答

1

你有NPE,因爲RoomList.getAdapter()回報null。也許你沒有撥打RoomList.setAdapter(ListAdapter adapter)

順便說一下,您應該將名稱RoomList更改爲roomList,以堅持Java convention。乍看起來像RoomList.getAdapter()看起來像一些類的RoomList類的靜態方法調用。

+0

thanx的suggestion.I對準我的代碼,現在NPE被拋出的EditText編輯=(EditText上)view.findViewById(R.id.editRoom),還有什麼是錯在這裏? – user2546015

+0

'findViewById(R.id.editRoom)'返回'null',這意味着在你用'setContentView(R.layout.your_layout_which_must_have_editRoom_id)'設置的XML佈局中找不到'R.id.editRoom'。您也可以通過清理項目'Project'>'Clean ...'來重新生成'R.java'文件,以確保'R.java'是最新的。 –

+0

我用xml文件中的id editRoom定義了EditText。 – user2546015

0

問題是,您正在訪問您的列表適配器,而無需先設置它。

RoomList = (ListView) vi.findViewById(R.id.list2); 
RoomList.setAdapter(new SubClassOfBaseAdapter()); // <-- setup your adapter here, with anArrayAdapter or a sublass of BaseAdapter 
for (int i = 0; i < RoomList.getAdapter().getCount(); i++) { 
    View view = RoomList.getChildAt(i); 
    EditText edit = (EditText) view.findViewById(R.id.editRoom); 
    Log.d("value from each edit text", edit.getText().toString()); 
}