如何从listview获取所有edittext数据

时间:2016-09-07 12:12:22

标签: android listview

我的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)

3 个答案:

答案 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