0

リスト ビュー用のカスタム アダプターを使用して 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);

何が間違っているのか、またはアプリがクラッシュする理由を教えてもらえますか?

4

1 に答える 1

5

これは再帰的なロジックです:

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

このメソッドを完了する方法はありません。アプリが何らかの種類のオーバーフロー例外をスローするまで、自分自身を何度も呼び出すだけです。そのはず:

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

このメソッドがリストからデータを返す方法に注意してください。

于 2013-04-17T15:58:09.553 に答える