1

私はLazyAdapterと呼ばれるカスタムListAdapterで満たされたListViewを表示しています。コードはここから来ています: http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text / . LazyAdapter は、カスタム オブジェクト "EventData" を使用します。思い通りにリストを表示できましたが、クリックされたオブジェクトを取得したいと思います。他の質問 ( herehere、およびthere ) に関するヘルプを見つけて、そのコードを書きました。

private OnItemClickListener mEventClickListener = new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) {

        EventData selectedEvent = (EventData) eventsListView.getItemAtPosition(arg2);

};

ただし、実行時にキャストエラーが発生します。

05-14 17:10:46.718: E/AndroidRuntime(3863): java.lang.ClassCastException: java.lang.Integer

私もこの同様の解決策を試しました:

EventData selectedEvent = (EventData) av.getItemAtPosition(arg2);

同じキャストエラーが発生しました。Object EventData を別の方法で取得する方法がわかりません。

ご協力いただきありがとうございます!

4

3 に答える 3

1

カスタムリストアダプターでは、整数を返すgetItem();ので、受け取るClassCastException

mEventDataCustomListView に提供されるリストです

ArrayList<EventData> mEventData;

@Override
public Object getItem(int position) {
    return mEventData.get(position);
}
于 2013-05-14T16:46:29.717 に答える
1

アダプター クラスでは、メソッドで、その位置 (位置ではなく)getItem(int position)のオブジェクトを返す必要があります。EventData

の代わりに Position値を返す場合があります。getItemEventData

于 2013-05-14T15:29:45.887 に答える
0

オブジェクトをフェッチする私のコードで

public void onItemClick(AdapterView<?> appList, View arg1,
                int element, long arg3) {
            // Get AppData for demo clicked
            AppData item = demoList.get(element);

ここで、demoList はアダプターにバインドされた基本データ構造 (ArrayList < AppData>) です。

于 2013-05-14T15:39:16.597 に答える