ListFragment每行包含多个字符串

时间:2014-02-04 23:02:12

标签: java android android-listview android-arrayadapter

我是Android开发的新手,我正在尝试创建一个ListFragment,可以从3个ListView对象创建ArrayList,每个对象包含30个字符串。每行都包含每个数组的字符串。

enter image description here

在我的阅读中,我发现ListView基本上是从ArrayAdapter创建的。我见过的唯一例子只显示使用了1个String []数组(http://goo.gl/Yrkn0khttp://goo.gl/hqkdl)。

如何将三个数组传递给ArrayAdapter以创建此ListView

2 个答案:

答案 0 :(得分:2)

ArrayAdapters可以处理任何类型的列表。如果您需要同时在三个单独的列表上运行ArrayAdapter,您需要做两件事:

  • 创建一个新对象类,它是三个列表的组合,例如。一个Item类,它有三个字段:Title,Description,Price。获得合适的对象后,将三个列表转换为对象的单个列表。
  • 然后,您需要创建一个扩展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
        }

}