Adapter.getItem(position)崩溃了应用程序

时间:2013-04-17 15:56:58

标签: java android crash android-adapter

我正在编写一个带有自定义适配器的Android应用程序,用于列表视图。

适配器是mainActivity类中的变量,包含自定义类的列表。我需要从其他活动访问此列表中的类,但是当应用程序到达适配器中的getItem(position)时,应用程序似乎崩溃。

基本上这就是应用程序的样子:

MainActivity类中的

有一个基本的自定义适配器:

public class MainActivity extends Activity {
    public static MyAdapter myAdapter;
    ...
}

适配器仅具有getItem等基本功能,并具有自定义(基本)类列表

public class MyAdapter extends BaseAdapter {
    private ArrayList<MyClass> tours = new ArrayList<MyClass>();

    @Override
    public Object getItem(int arg0) {
        return getItem(arg0);
    }
    ...
}

当打开其他活动时,会向其传递索引以从列表中访问某个对象。

唯一的问题是,当我尝试从此列表访问一个类时,应用程序崩溃了...... 我使用以下代码从适配器列表中访问该类:

MyClass myClass = (MyClass)MainActivity.myAdapter.getItem(index);

有人可以告诉我我做错了什么或应用程序崩溃的原因吗?

1 个答案:

答案 0 :(得分:5)

这是递归逻辑:

@Override
public Object getItem(int arg0) {
    return getItem(arg0);
}

此方法无法完成,它只是一次又一次地调用自身,直到应用程序抛出某种类型的溢出异常。它应该是:

@Override
public MyClass getItem(int arg0) {
    return tours.get(arg0);
}

注意此方法如何从List中返回数据。