强制关闭listview onitemclick

时间:2013-07-08 03:38:44

标签: android android-listview android-activity

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

3 个答案:

答案 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适配器扩展的自定义适配器。小心这个类,因为这么多列表大小获取和设置方法会出现这个问题。

在调试模式下检查自定义适配器。