我的listview有19行,我需要从listview获取所有edittext数据并存储到arraylist中。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int itemCount = mListView.getCount();
Log.d("count", ""+itemCount);
final ArrayList<String> collection = new ArrayList<>();
for(int i=0; i<itemCount; i++){
view1 = mListView.getChildAt(i);
Log.d("Position: ", ""+view1);
EditText tt = (EditText)view1.findViewById(R.id.etqty);
value = tt.getText().toString();
collection.add(value);
}
//int position = contractstoreAdapter.getItem();
Log.d("number", String.valueOf(collection));
}
});
这是我的错误。
09-07 08:09:05.526 8669-8669/com.example.chintatt.cbi E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.chintatt.cbi, PID: 8669
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.example.chintatt.cbi.Fragment_orderstock$1.onClick(Fragment_orderstock.java:107)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
答案 0 :(得分:1)
ListView并不总是包含数据,因为每次进入显示时都会创建子视图
您必须使用某个适配器来存储数据吗?尝试从那里获取所有信息。不是来自ListView,而是来自数据所包含的适配器。
希望这会对你有所帮助
如果你能告诉你如何将数据存储在适配器中,那将有助于我进一步准确地说出你的答案
答案 1 :(得分:0)
for (int i = 0; i <= mListView.getLastVisiblePosition() - mListView.getFirstVisiblePosition(); i++)
我认为这应该是你需要实现的循环。
答案 2 :(得分:0)
EditText tt = (EditText)view1
使用上面的行
EditText tt = (EditText)view1.findViewById(R.id.etqty);
为什么要调用findViewById(),无论你是否在视图中获得了edittext