【发布时间】:2014-02-26 07:08:03
【问题描述】:
我正在使用 CommonsWare 的 MergeAdapter 来合并两个 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要合并,分别是用户列表(由UserVanitiesAdapter支持)和用户类别(由UserCategoriesAdapter支持)
这是我点击一个项目时得到的错误:
java.lang.ClassCastException: com.example.model.usershop.UserCategoriesModel cannot be cast to com.example.model.usershop.UserVanitiesModel
如果点击了第二个列表视图,则反之。
java.lang.ClassCastException: com.example.model.usershop.UserVanitiesModel cannot be cast to com.example.model.usershop.UserCategoriesModel
【问题讨论】:
-
即兴发挥,您所拥有的一切似乎都很好。请完整而准确地解释什么是行不通的。
-
我已经更新了添加堆栈跟踪的问题。
标签: android listview commonsware-cwac