Android 合并两个适配器以在listview中分别显示一个适配器

Android 合并两个适配器以在listview中分别显示一个适配器,android,listview,android-adapter,Android,Listview,Android Adapter,我有两个适配器,我想将它们合并到一个ListView中,这样我可以从每个适配器中显示一个。 范例 我看到了Commonware的Merge Adapter,它按照您添加适配器的相同顺序显示项目。示例:mergeadapter.addAdapter(adapter1);mergeadapter.addAdapter(adapter2);然后它将显示所有adapter1项目,然后显示所有adapter2项目,无法从每个项目上显示,如我编写的示例所示。您应该使用每个适配器的数据源来填充第三个主适配器。

我有两个适配器,我想将它们合并到一个ListView中,这样我可以从每个适配器中显示一个。 范例

我看到了Commonware的Merge Adapter,它按照您添加适配器的相同顺序显示项目。示例:mergeadapter.addAdapter(adapter1);mergeadapter.addAdapter(adapter2);然后它将显示所有adapter1项目,然后显示所有adapter2项目,无法从每个项目上显示,如我编写的示例所示。

您应该使用每个适配器的数据源来填充第三个主适配器。下面是一个非常简单的字符串示例:

String[] dataSource1 = { "One", "Three" };
String[] dataSource2 = { "Two", "Four"};
String[] dataSource3 = new String[4];
int index = 0;
for(int i=0; i< dataSource1.length; i++) {
    dataSource3[index++] = dataSource1[i];
    dataSource3[index++] = dataSource2[i];
}
// dataSource3 == { "One", "Two", "Three", "Four" }
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.itemlayout, dataSource3);
String[]dataSource1={“一”,“三”};
字符串[]数据源2={“二”,“四”};
字符串[]数据源3=新字符串[4];
int指数=0;
for(int i=0;i

正如我所说,它非常基本,而且根本不可伸缩,但它说明了您需要做什么。

有一个很好的组件可以做这件事,还有更多(您也可以合并适配器和单个视图)


您不应该为此使用两个不同的适配器。您应该使用一个适配器,将两个适配器的数据源合并。@RGraham有时您只有两个适配器,因此无法合并数据源data@AlexTrue,但
adapter.getItem(position)
应允许您从现有适配器填充新源。从代码的角度来看,我认为
Adapter1
Adapter2
的合并不再是一个或另一个,而是现在的
Adapter3
。当然,也许有一种情况我没有想到of@RGraham. 是的,我没有意识到还有更多的问题需要解决。我看到了这张图片,它以与添加适配器相同的顺序显示项目。示例:mergeadapter.addAdapter(adapter1);mergeadapter.addAdapter(adapter2);然后它将显示所有adapter1项目,然后显示所有adapter2项目,无法从每个项目上显示,就像我在原始问题中编写的示例一样
String[] dataSource1 = { "One", "Three" };
String[] dataSource2 = { "Two", "Four"};
String[] dataSource3 = new String[4];
int index = 0;
for(int i=0; i< dataSource1.length; i++) {
    dataSource3[index++] = dataSource1[i];
    dataSource3[index++] = dataSource2[i];
}
// dataSource3 == { "One", "Two", "Three", "Four" }
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.itemlayout, dataSource3);