android ListView mListView.getChildAt(i)无法获取,如何解决?

时间:2016-08-28 14:32:04

标签: android listview android-edittext

我创建了以下代码,以获取多个EditText的内容:

Integer data[] = new Integer[4];

ListView listView = (ListView) findViewById(R.id.listView);
for (i=0;i < listView.getCount();i++){
    LinearLayout layout = (LinearLayout) listView.getChildAt(i);
    EditText et = (EditText) layout.findViewById(R.id.record_list_edit);
    data[i] = Integer.parseInt(et.getText().toString());
}

我可以成功使用以下代码来获取第一个数字(或任何我想要的数字):

LinearLayout layout = (LinearLayout) listView.getChildAt(0);
EditText et = (EditText) layout.findViewById(R.id.record_list_edit);
data[0] = Integer.parseInt(et.getText().toString());

但是当我使用for循环获取所有内容时,它会中断。

这是错误日志:

08-28 22:12:33.931 7814-7814/edu.nankai.soar.demof E/AndroidRuntime: FATAL EXCEPTION: main

Process: edu.nankai.soar.demof, PID: 7814

java.lang.IllegalStateException: Could not execute method for android:onClick
   at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
   at android.view.View.performClick(View.java:4851)
   at android.view.View$PerformClick.run(View.java:20016)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:135)
   at android.app.ActivityThread.main(ActivityThread.java:5506)
   at java.lang.reflect.Method.invoke(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:952)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
Caused by: java.lang.reflect.InvocationTargetException
   at java.lang.reflect.Method.invoke(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
   at android.view.View.performClick(View.java:4851) 
   at android.view.View$PerformClick.run(View.java:20016) 
   at android.os.Handler.handleCallback(Handler.java:739) 
   at android.os.Handler.dispatchMessage(Handler.java:95) 
   at android.os.Looper.loop(Looper.java:135) 
   at android.app.ActivityThread.main(ActivityThread.java:5506) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at java.lang.reflect.Method.invoke(Method.java:372) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:952) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747) 
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=4; index=4
   at edu.nankai.soar.demof.SensorsActivity.log(SensorsActivity.java:81)
   at java.lang.reflect.Method.invoke(Native Method) 
   at java.lang.reflect.Method.invoke(Method.java:372) 
   at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
   at android.view.View.performClick(View.java:4851) 
   at android.view.View$PerformClick.run(View.java:20016) 
   at android.os.Handler.handleCallback(Handler.java:739) 
   at android.os.Handler.dispatchMessage(Handler.java:95) 
   at android.os.Looper.loop(Looper.java:135) 
   at android.app.ActivityThread.main(ActivityThread.java:5506) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at java.lang.reflect.Method.invoke(Method.java:372) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:952) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747) 

1 个答案:

答案 0 :(得分:0)

真的,谢谢你,Shaishav

Integer data[] = new Integer[listView.getCount()];

我知道为什么我错了。我数错了数字......我太傻了......

答案来自Shaishav。