我的onitemclick
看起来像这样:
//set up clicks
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView <? > arg0, View arg1,
int arg2, long arg3) {
BeerTastes o = (BeerTastes) arg0.getItemAtPosition(arg2);
String tempTaste = o.taste;
Intent myIntent = new Intent(c, TastePage.class);
myIntent.putExtra("taste", tempTaste);
c.startActivity(myIntent);
}
});
我的BeerTastes看起来像:
public class BeerTastes {
String taste;
double percent;
public BeerTastes(String t, double p){
taste = t;
percent = p;
}
}
当我点击列表视图中的某个项目时,我会收到此强制关闭错误:
07-07 23:28:31.253 2009-2009/com.beerportfolio.beerportfoliopro E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.beerportfolio.beerportfoliopro/com.example.beerportfoliopro.TastePage}: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368)
at android.app.ActivityThread.access$600(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:155)
at android.app.ActivityThread.main(ActivityThread.java:5536)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1074)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:841)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at com.example.beerportfoliopro.TastePage.onCreate(TastePage.java:31)
at android.app.Activity.performCreate(Activity.java:5066)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1102)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)
... 11 more
答案 0 :(得分:1)
而不是使用
BeerTastes o=(BeerTastes)arg0.getItemAtPosition(arg2);
使用您用于设置列表视图的 arraylist 。
例如,如果您的类型为BeerTastes的arrayList是myArrayList。然后在onItemClickListener中使用此行
BeerTastes o = myArrayList.get(arg2);
此行将在listview中单击该项目。
答案 1 :(得分:0)
其说法 ArrayIndexOutOfBoundsException
我认为问题就在这一行
BeerTastes o=(BeerTastes)arg0.getItemAtPosition(arg2);
答案 2 :(得分:0)
我认为您正在使用从Base适配器扩展的自定义适配器。小心这个类,因为这么多列表大小获取和设置方法会出现这个问题。
在调试模式下检查自定义适配器。