2013-11-28 27 views
0

我有两个适配器,我想将它们合并在一个ListView中,所以我可以显示每个。 例合并两个适配器以显示从列表视图中的每一个

Adapter1 , Adapter2. 

ListView 
getView(position = 0) -> from Adapter1 
getView(position = 1) -> from Adapter2 
getView(position = 2) -> from Adapter1 
getView(position = 3) -> from Adapter2 
getView(position = 4) -> from Adapter1 

我看到合并由Commonsware适配器它显示在您添加适配器给它的顺序相同的项目。例如:mergeadapter.addAdapter(adapter1); mergeadapter.addAdapter(adapter2);那么它将显示所有adapter1项目,然后显示所有adapter2项目,在我写的示例中没有办法显示每个项目。

+3

你不应该使用两种不同的*适配器*这一点。您应该使用一个适配器,将两者的数据源合并。 – CodingIntrigue

+0

@Rraham有时你只有两个适配器来找你,所以你不能合并数据 –

+0

@Alex True,但'adapter.getItem(position)'应该允许你从现有的适配器填充一个新的源。从代码的角度来看,我认为'Adapter1'和'Adapter2'的合并不再是一个或另一个,而是现在'Adapter3'。当然,也许有一种情况我没有想到 – CodingIntrigue

回答

0

您应该使用数据为每个适配器填充第三个主适配器。这里是一个非常基本的String`例如:

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

就像我说的,这是很基本的,没有规模可言,但它说明你需要做什么。

1

有一个伟大的成分做到这一点,更多的(你可以合并适配器和单一视图,太)

https://github.com/commonsguy/cwac-merge

+0

我看到它显示的项目以相同的顺序添加适配器。例如:mergeadapter.addAdapter(adapter1); mergeadapter.addAdapter(adapter2); 那么它会显示所有adapter1项目,然后所有adapter2项目,没有办法显示在每个像我在我看到的原始问题 – user4o01

+0

写的例子中。那么我猜,RGraham所说的是对的。 –

相关问题