Android 将适配器与OnClickItemListener合并
我正在使用Commonware合并两个ListView 请注意,两个ListView都有自己的模型 一切都进行得很顺利,除了当我想从合并的Listview中单击一个项目时,我似乎无法获得表示其相应模型的正确数据。我已经看到了这一点,虽然它没有任何完整的解决方案,我正在寻找 以下是我实现MergeAdapter的方法:Android 将适配器与OnClickItemListener合并,android,listview,commonsware-cwac,Android,Listview,Commonsware Cwac,我正在使用Commonware合并两个ListView 请注意,两个ListView都有自己的模型 一切都进行得很顺利,除了当我想从合并的Listview中单击一个项目时,我似乎无法获得表示其相应模型的正确数据。我已经看到了这一点,虽然它没有任何完整的解决方案,我正在寻找 以下是我实现MergeAdapter的方法: @Override public void onActivityCreated(Bundle savedInstanceState) { super
@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);
}
我被这件事难住了。如何在合并的listview中获取相应的对象并从中获取任何数据?我正在将这些数据传递给接口侦听器
更新
我得到了两个要合并的列表视图,即UserVanitieAdapter支持的用户列表和UserCategoriesAdapter支持的用户类别
这是我在单击项目时遇到的错误:
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.getItemposition两次,并将其强制转换为两个不同的类。除非这些类通过继承而相关,否则根据定义,一个类将因ClassCastException而崩溃
只调用l.getAdapter.getItemposition一次。您需要根据位置或使用instanceof运算符确定要转换到哪个类。您将调用两次l.getAdapter.getItemposition并将其转换到两个不同的类。除非这些类通过继承而相关,否则根据定义,一个类将因ClassCastException而崩溃
只调用l.getAdapter.getItemposition一次。您需要根据位置或使用instanceof操作符来确定要转换到哪个类。即兴,您拥有的似乎很好。请完整、准确地解释什么不起作用。我已经更新了问题,添加了堆栈跟踪。即兴说,你有什么似乎很好。请完整准确地解释什么不起作用。我已经更新了添加堆栈跟踪的问题。我不太熟悉instanceof运算符。我是否必须重写库的getItem才能知道单击的项来自哪个适配器?否。instanceof是标准Java的一部分。或者,让两个模型都实现一些公共接口,转换到该接口,并在接口上调用一些方法来确定如何处理对象。我是否必须重写库的getItem才能知道单击的项来自哪个适配器?否。instanceof是标准Java的一部分。或者,让两个模型实现一些公共接口,转换到该接口,并调用接口上的某些方法来确定如何处理对象。
java.lang.ClassCastException: com.example.model.usershop.UserVanitiesModel cannot be cast to com.example.model.usershop.UserCategoriesModel