java - 从 ListView 单击获取自定义对象

标签 java android android-layout android-listview

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

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);

我遇到了同样的转换错误。我不知道如何以其他方式获取我的对象事件数据。

感谢您的帮助!

最佳答案

在您的自定义列表适配器中,您在 getItem(); 中返回一个整数,因此您将收到 ClassCastException

mEventData 是提供给 CustomListView 的列表

ArrayList<EventData> mEventData;

@Override
public Object getItem(int position) {
    return mEventData.get(position);
}

关于java - 从 ListView 单击获取自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16547041/

相关文章:

android - 取拇指印象an​​droid

android - 保持 Activity 处于暂停状态 - Android

java - 无法解析 ':app@debug/compileClasspath'的依赖项:gradle同步时无法解决com.google.android.things:androidthings:1.0错误

clojure 中的 Java lambda 回调

java - 音频记录和播放失败-Android AudioRecord&AudioTrack

android - 如何通过 android 中的数据绑定(bind)将 onTextChanged 监听器添加到包含布局 xml

android - android 中的 fragment 事务导致黑屏

java - 为应用程序设计保存文件

java - 我必须使用什么类型的文字才能使 CDI 的 Instance::select 方法正常工作?

c# - Xamarin - 查看设备连接到 Wifi 网络的可靠方式 (Android)