我按照给予链接: Android ListView adapter with two ArrayLists如何使用两个不同大小的动态ArrayList在android中创建listview?
但在上述链路解决方案既数组列表添加到一个ArrayList中。可以请建议任何答案,因为我的要求如下:
要求:我从服务器获取数据都是不同的API,所以如何设置为解析后的列表视图?
请提出任何解决方案提前 感谢
我按照给予链接: Android ListView adapter with two ArrayLists如何使用两个不同大小的动态ArrayList在android中创建listview?
但在上述链路解决方案既数组列表添加到一个ArrayList中。可以请建议任何答案,因为我的要求如下:
要求:我从服务器获取数据都是不同的API,所以如何设置为解析后的列表视图?
请提出任何解决方案提前 感谢
有一些事情你可以在这种情况下,这样做:
你的数据模型中继承(或接口)模式,让抽象的数据为统一的类型并在使用时显示它getItemViewType
确实区分数据
使用第三方库如mergelist并使用2个不同的适配器
当你的模型对两者都不相同时,你可以创建一个名为CustomInterface的接口并将它实现到你的两个模型中。然后在适配器,而不是模型,使用CustomInterface并在getView,你必须检查当前的模型,如:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater theInflater = LayoutInflater.from(getContext());
View theView = theInflater.inflate(R.layout.custom_row, parent, false);
if(entity instanceof Obj1){
// Model 1
} else if(entity instanceof Obj2){
// Model 2
}
return theView;
}
记住,列表仅适用于同类集合。如果您有异构集合,则可以在所有模型上实现接口并创建接口列表,然后可以在该列表中放置实现相同接口的任何模型。
谢谢亚西尔先生,现在我明白了。 –
如果这解决了您的问题,请将其标记为正确答案 –
样品在这里。
接口
public interface DataType {
String getTitle();
String getAddress();
}
数据类
public class AData implements DataType {
String titleA;
String addressA;
@Override
public String getTitle() {
return titleA;
}
@Override
public String getAddress() {
return addressA;
}
// getter & setter
}
public class BData implements DataType {
String titleB;
String addressB;
@Override
public String getTitle() {
return titleB;
}
@Override
public String getAddress() {
return addressB;
}
// getter & setter
}
适配器
public class CustomAdapter implements BaseAdapter {
List<DataType> arrayList;
// getCount...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// inflating views, bindings, reuse, etc
DataType data = arrayList.get(position);
textView.setText(data.getTitle());
textView.setText(data.getAddress());
// return ...
}
我假设你的东东d将不同的项目放入列表中。对?您可以创建一个额外的类,并只使用这两个需要使用的字段。另外,还有许多其他方法可以实现同样的目标。 –
是的,你可以请分享任何链接 –