我是Android开发的新手,我正在尝试创建一个ListFragment
,可以从3个ListView
对象创建ArrayList
,每个对象包含30个字符串。每行都包含每个数组的字符串。
在我的阅读中,我发现ListView
基本上是从ArrayAdapter
创建的。我见过的唯一例子只显示使用了1个String []数组(http://goo.gl/Yrkn0k,http://goo.gl/hqkdl)。
如何将三个数组传递给ArrayAdapter
以创建此ListView
?
答案 0 :(得分:2)
ArrayAdapters可以处理任何类型的列表。如果您需要同时在三个单独的列表上运行ArrayAdapter,您需要做两件事:
getView
方法,以便正确显示您的项目。修改强>
示例:
public class Item {
private String title, desc, price;
public Item(String title, String desc, String price) {
this.title = title;
...
}
*provide standard getters and setters*
}
...
ArrayList<Item> items = new ArrayList<Item>();
for(int i = 0; i < titles.length; i++) {
items.add(new Item(titles[i], descriptions[i], prices[i]);
}
然后新适配器应采用
的形式private class CustomAdapter extends ArrayAdapter<Item> {
public CustomAdapter(ArrayList<Item> items) {
super(getActivity(), 0, items);
}
...
答案 1 :(得分:0)
ArrayAdapter<T>
类是通用的,因此您可以将它与java Collections一起使用。要执行您要执行的操作,您可以使用ArrayList<ArrayList<String>>
或仅构建包含3个字符串字段的模型对象并使用ArrayList<YourModel>
。
例如:
public class MyAdapter extends ArrayAdapter<ArrayList<ArrayList<String>>>{
//Constructor
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ArrayList<String> current = getItem(position);
//Do Something
}
}