gpt4 book ai didi

android - MergeAdapter 与 OnClickItemListener

转载 作者:搜寻专家 更新时间:2023-11-01 08:00:27 25 4
gpt4 key购买 nike

我正在使用 MergeAdapter通过 CommonsWare 合并两个 ListView。

请注意,两个 ListView 都有自己的模型。

一切顺利,除了当我想从合并的 Listview 中单击一个项目时,我似乎无法获得表示其相应模型的正确数据。我看过这个answer ,虽然它没有任何完整的解决方案来解决我正在寻找的问题。

这就是我实现 MergeAdapter 的方式:

    @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

// merge adapter
mAdapter = new MergeAdapter();

// user list
arrUserVanities = new ArrayList<UserVanitiesModel>();
uva = new UserVanitiesAdapter(arrUserVanities, getActivity());
mAdapter.addAdapter(uva);

// user category
arrUserCategory = new ArrayList<UserCategoriesModel>();
uca = new UserCategoryAdapter(arrUserCategory, getActivity());
mAdapter.addAdapter(uca);


setListAdapter(mAdapter);
}

onItemClickListener中:

    @Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);


UserVanitiesModel vanityModel = (UserVanitiesModel) l.getAdapter().getItem(position);
String vanity_id = vanityModel.getVanity_id();
String vanity_name = vanityModel.getVanity_name();


UserCategoriesModel categoryModel = (UserCategoriesModel) l.getAdapter().getItem(position);
String category_id = categoryModel.getCategory_id();
String category_name = categoryModel.getCategory_name();

Log.d(TAG, "Item clicked: "+category_name);
Log.d(TAG, "Item clicked: "+vanity_name);

// mListener.onUserCategoriesSelected(category_id, category_name);
}

我卡在这了。如何在合并的 ListView 中获取相应的对象并从中获取任何数据?我正在将这些数据传递给接口(interface)监听器。


更新

我有两个要合并的 ListView ,即用户列表(由UserVanitiesAdapter 支持)和用户类别(由 支持)用户类别适配器)

这是我在单击某个项目时遇到的错误:

java.lang.ClassCastException: com.example.model.usershop.UserCategoriesModel cannot be cast to com.example.model.usershop.UserVanitiesModel

如果单击第二个 ListView ,则相反。

java.lang.ClassCastException: com.example.model.usershop.UserVanitiesModel cannot be cast to com.example.model.usershop.UserCategoriesModel

最佳答案

您正在调用 l.getAdapter().getItem(position) 两次并将其转换为两个不同的类。除非这些类通过继承相关,根据定义,否则会因 ClassCastException 而崩溃。

只调用一次l.getAdapter().getItem(position)。您需要根据 position 或使用 instanceof 运算符来确定要转换到哪个类。

关于android - MergeAdapter 与 OnClickItemListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22034219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com