1

我正在显示一个 ListView,其中填充了一个名为 LazyAdapter 的自定义 ListAdapter,该代码来自这里:http ://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text /。LazyAdapter 使用我的自定义对象“EventData”。我设法按照我的意愿显示我的列表,但现在我想获得点击的对象。我在其他问题上找到了一些帮助(这里这里那里),并编写了该代码:

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

mEventData是提供给 CustomListView 的列表

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值 ingetItem而不是 EventData.

于 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 回答