我正在显示一个ListView,我填充了一个名为LazyAdapter的自定义ListAdapter,代码来自此处:http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/。 LazyAdapter使用我的自定义对象“EventData”。我设法按我的意愿显示我的列表,但现在我想获得点击的对象。我在其他问题(here,here和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。
感谢您的帮助!
答案 0 :(得分:1)
在适配器类中,在方法getItem(int position)
中,您应该返回该位置的EventData
对象(而不是位置)。
您可能会在Position
而不是getItem
中返回EventData
值。
答案 1 :(得分:1)
在您的自定义列表适配器中,您会在getItem();
中返回一个整数,因此您将收到ClassCastException
mEventData
是提供给CustomListView
ArrayList<EventData> mEventData;
@Override
public Object getItem(int position) {
return mEventData.get(position);
}
答案 2 :(得分:0)
在我的代码中获取我做的对象
public void onItemClick(AdapterView<?> appList, View arg1,
int element, long arg3) {
// Get AppData for demo clicked
AppData item = demoList.get(element);
其中demoList是绑定到适配器的底层数据结构(ArrayList&lt; AppData&gt;)