Java 正在从ListView获取EditText值。。。有时
因此,我有一个带有自定义单元格的ListView,其中包含EditText。我创建了一个根据请求调用的函数,该函数列出了每个编辑文本的所有值。所有单元格都是从静态列表中创建的,它们都完全相同。 问题是,前7个单元格使用下面的代码工作正常,然后崩溃:Java 正在从ListView获取EditText值。。。有时,java,android,eclipse,listview,Java,Android,Eclipse,Listview,因此,我有一个带有自定义单元格的ListView,其中包含EditText。我创建了一个根据请求调用的函数,该函数列出了每个编辑文本的所有值。所有单元格都是从静态列表中创建的,它们都完全相同。 问题是,前7个单元格使用下面的代码工作正常,然后崩溃: ListView l = (ListView) CartPage.this.findViewById(R.id.cartItems); // total_item_count is equal to the int 11, which is how
ListView l = (ListView) CartPage.this.findViewById(R.id.cartItems);
// total_item_count is equal to the int 11, which is how many cells there are.
for(int i=0;i<total_item_count-1;i++){
View view=l.getChildAt(i);
System.out.println("("+i+"/"+total_item_count+")");
EditText editText=(EditText) view.findViewById(R.id.product_count);
String string=editText.getText().toString();
System.out.println(i+": "+string);
}
我已经尝试清理我的项目10次了,都没有用
编辑:发现它只对屏幕上显示的项目数有效(因此,当您将其翻转到横向显示3个项目时,它只对前3个项目有效)。ListView l=(ListView)CartPage.this.findViewById(R.id.cartItems);
EditText EditText=(EditText)view.findViewById(R.id.product\u计数);
字符串字符串;
//项目总数等于整数11,即有多少个单元格。
对于(int i=0;iListView l=(ListView)CartPage.this.findViewById(R.id.cartItems);
EditText EditText=(EditText)view.findViewById(R.id.product\u计数);
字符串字符串;
//项目总数等于整数11,即有多少个单元格。
对于(int i=0;iListView l=(ListView)CartPage.this.findViewById(R.id.cartItems);
EditText EditText=(EditText)view.findViewById(R.id.product\u计数);
字符串字符串;
//项目总数等于整数11,即有多少个单元格。
对于(int i=0;iListView l=(ListView)CartPage.this.findViewById(R.id.cartItems);
EditText EditText=(EditText)view.findViewById(R.id.product\u计数);
字符串字符串;
//项目总数等于整数11,即有多少个单元格。
对于(int i=0;i您不应该迭代ListView
中的视图,并假设它实际上为列表中的每个项目包含一个单独的视图。它不应该,ListView
在滚动时循环视图,只根据ListAdapter
交换数据
相反,您应该在列表适配器
中迭代数据,但这意味着您很可能必须修改适配器代码,以便在编辑文本时将文本保存在编辑文本
中的某个位置。您不应该在列表视图
中迭代视图,并假设它实际上包含一个单独的视图列表中的每一项。当滚动浏览时,ListView
不会回收视图,只会根据ListAdapter
交换数据
相反,您应该在列表适配器
中迭代数据,但这意味着您很可能必须修改适配器代码,以便在编辑文本时将文本保存在编辑文本
中的某个位置。您不应该在列表视图
中迭代视图,并假设它实际上包含一个单独的视图列表中的每一项。当滚动浏览时,ListView
不会回收视图,只会根据ListAdapter
交换数据
相反,您应该在列表适配器
中迭代数据,但这意味着您很可能必须修改适配器代码,以便在编辑文本时将文本保存在编辑文本
中的某个位置。您不应该在列表视图
中迭代视图,并假设它实际上包含一个单独的视图列表中的每一项。当滚动浏览时,ListView
不会回收视图,只会根据ListAdapter
交换数据
相反,您应该在列表适配器
中迭代数据,但这意味着您很可能必须修改适配器代码,以便在编辑文本时将文本保存在编辑文本
中的某个位置。您的CartPage.java
文件的第305行是什么?还需要发布相关信息代码,所以我们知道你在做什么。我的评论与原始问题无关,但我真的认为你的for循环不正确。它应该是for(int I=0;i@nKnEditText EditText=(EditText)view.findViewById(R.id.product\u计数);@trylimits是的,你是对的!你的CartPage.java
文件的第305行是什么?还需要发布相关的代码,这样我们就知道你在做什么。我的评论与原始问题无关,但我真的认为你的for循环不正确。它应该是for(int I=0;i@nKn编辑文本编辑文本=(EditText)view.findViewById(R.id.product\U计数);@trylimits是的,你是对的!你的CartPage.java
文件的第305行是什么?还需要发布相关的代码,这样我们就知道你在做什么。我的评论与原始问题无关,但我真的认为你的for循环不正确。它应该是for(int I=0;i@nKn编辑文本编辑文本=(EditText)view.findViewById(R.id.product\U计数);@trylimits是的,你是对的!你的CartPage.java
文件的第305行是什么?还需要发布相关的代码,这样我们就知道你在做什么。我的评论与原始问题无关,但我真的认为你的for循环不正确。它应该是for(int I=0;i@nKn编辑文本编辑文本=(EditText)view.findViewById(R.id.product_count);@trylimits是的,你说得对!尝试过了,效果很好!删除了view.findViewById,并将其更改为findViewById(因为视图尚未定义),然后就成功了!非常感谢!view view=l.getChildAt(i)这行代码的用途是什么?没有使用视图将其打印出来,效果很好!删除了view.findviewbyd,并将其更改为findviewbyd(因为视图尚未定义),然后它就工作了!非常感谢!view view=l.getChildAt(i)这行代码的用途是什么?没有使用view将它打印出来,效果很好!删除了view.findViewById,并将其更改为findViewById(因为尚未定义view),然后它就工作了!非常感谢!view view=l.getChildAt(i)这行代码的用途是什么?view没有使用DT
02-17 06:44:17.540: E/AndroidRuntime(29086): FATAL EXCEPTION: main
02-17 06:44:17.540: E/AndroidRuntime(29086): java.lang.IllegalStateException: Could not execute method of the activity
02-17 06:44:17.540: E/AndroidRuntime(29086): at android.view.View$1.onClick(View.java:3617)
02-17 06:44:17.540: E/AndroidRuntime(29086): at android.view.View.performClick(View.java:4222)
02-17 06:44:17.540: E/AndroidRuntime(29086): at android.view.View$PerformClick.run(View.java:17397)
02-17 06:44:17.540: E/AndroidRuntime(29086): at android.os.Handler.handleCallback(Handler.java:725)
02-17 06:44:17.540: E/AndroidRuntime(29086): at android.os.Handler.dispatchMessage(Handler.java:92)
02-17 06:44:17.540: E/AndroidRuntime(29086): at android.os.Looper.loop(Looper.java:137)
02-17 06:44:17.540: E/AndroidRuntime(29086): at android.app.ActivityThread.main(ActivityThread.java:5167)
02-17 06:44:17.540: E/AndroidRuntime(29086): at java.lang.reflect.Method.invokeNative(Native Method)
02-17 06:44:17.540: E/AndroidRuntime(29086): at java.lang.reflect.Method.invoke(Method.java:511)
02-17 06:44:17.540: E/AndroidRuntime(29086): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-17 06:44:17.540: E/AndroidRuntime(29086): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-17 06:44:17.540: E/AndroidRuntime(29086): at dalvik.system.NativeStart.main(Native Method)
02-17 06:44:17.540: E/AndroidRuntime(29086): Caused by: java.lang.reflect.InvocationTargetException
02-17 06:44:17.540: E/AndroidRuntime(29086): at java.lang.reflect.Method.invokeNative(Native Method)
02-17 06:44:17.540: E/AndroidRuntime(29086): at java.lang.reflect.Method.invoke(Method.java:511)
02-17 06:44:17.540: E/AndroidRuntime(29086): at android.view.View$1.onClick(View.java:3612)
02-17 06:44:17.540: E/AndroidRuntime(29086): ... 11 more
02-17 06:44:17.540: E/AndroidRuntime(29086): Caused by: java.lang.NullPointerException
02-17 06:44:17.540: E/AndroidRuntime(29086): at com.venuevip.android.CartPage.updateCart(CartPage.java:305)
02-17 06:44:17.540: E/AndroidRuntime(29086): ... 14 more
ListView l = (ListView) CartPage.this.findViewById(R.id.cartItems);
EditText editText=(EditText) view.findViewById(R.id.product_count);
String string;
// total_item_count is equal to the int 11, which is how many cells there are.
for(int i=0;i<total_item_count-1;i++){
View view=l.getChildAt(i);
System.out.println("("+i+"/"+total_item_count+")");
string=editText.getText().toString();
System.out.println(i+": "+string);
}