我正在尝试从列表视图中获取文本的值。它适用于顶行,但当我向下滚动时,它返回Null值。我尝试难以解决,但失败了。
logcat的
12-12 06:28:31.960: E/AndroidRuntime(1690): FATAL EXCEPTION: main
12-12 06:28:31.960: E/AndroidRuntime(1690): java.lang.NullPointerException
12-12 06:28:31.960: E/AndroidRuntime(1690): at com.example.graphjsoup.ShowOrderList.onListItemClick(ShowOrderList.java:42)
12-12 06:28:31.960: E/AndroidRuntime(1690): at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
12-12 06:28:31.960: E/AndroidRuntime(1690): at android.widget.AdapterView.performItemClick(AdapterView.java:298)
12-12 06:28:31.960: E/AndroidRuntime(1690): at android.widget.AbsListView.performItemClick(AbsListView.java:1100)
12-12 06:28:31.960: E/AndroidRuntime(1690): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2788)
12-12 06:28:31.960: E/AndroidRuntime(1690): at android.widget.AbsListView$1.run(AbsListView.java:3463)
12-12 06:28:31.960: E/AndroidRuntime(1690): at android.os.Handler.handleCallback(Handler.java:730)
12-12 06:28:31.960: E/AndroidRuntime(1690): at android.os.Handler.dispatchMessage(Handler.java:92)
12-12 06:28:31.960: E/AndroidRuntime(1690): at android.os.Looper.loop(Looper.java:137)
12-12 06:28:31.960: E/AndroidRuntime(1690): at android.app.ActivityThread.main(ActivityThread.java:5103)
12-12 06:28:31.960: E/AndroidRuntime(1690): at java.lang.reflect.Method.invokeNative(Native Method)
12-12 06:28:31.960: E/AndroidRuntime(1690): at java.lang.reflect.Method.invoke(Method.java:525)
12-12 06:28:31.960: E/AndroidRuntime(1690): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
12-12 06:28:31.960: E/AndroidRuntime(1690): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-12 06:28:31.960: E/AndroidRuntime(1690): at dalvik.system.NativeStart.main(Native Method)
在 onListItemClick 中,即使在向下滚动时,它返回的所有“位置”值都是正确的。但是在较低值上 getChildAt 会出错
代码
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
View mView = l.getChildAt(position);
Log.d("xxListView", l.toString() + "");
Log.d("xxPosm", mView.toString() + "");
mOrderId = (TextView) mView.findViewById(R.id.order_id);
Id = mOrderId.getText().toString();
Log.d("xxID", Id + "+1");
new DialogBox().execute();
}
我试图将mView的值转换为String,并得到类似下面的。我一直点击每一行,它返回一些字符串(我不知道是什么)。每次单击时,突出显示的值都会增加。一旦触及1000,它就会崩溃。我不知道天气会不会有帮助。如果有人可以解释它,那将是伟大的。
答案 0 :(得分:1)
更改您的TextView
,如下所示:
mOrderId = (TextView) v.findViewById(R.id.order_id);
答案 1 :(得分:1)
protected void onListItemClick(ListView l, View v, int position, long id)
为什么不使用此事件中传递的View v
。这是相同的子视图