混淆了什么样的listView和适配器在Android中用于小型阵列

时间:2014-01-14 09:00:52

标签: java android listview android-listview android-arrayadapter

我还没有使用过listViews,现在我需要帮助来决定使用哪种适配器。

我需要三个标题:

String fruit = "Fruits";
String vegetable = "Vegetables";
String bread = "Breads"

我还有三个数组要用作listView的数据(不使用此示例应用程序的数据库)。我可能想要三个ArrayLists,但是现在我将使用数组。

String[] fruits = {"Apple","Orange"};
String[] vegetables = {"Potato","Carrot"};
String[] breads = {"Rye","Wheat"};

我希望ListView看起来像Android 4.x设置屏幕,带有"标题"标题。

Fruits
___________________________
Apple
---------------------------
Orange
---------------------------
Vegetables
___________________________
Potato
---------------------------
Carrot
---------------------------
Breads
___________________________
Rye
---------------------------
Wheat
---------------------------

有人能指出我正确的方向吗?再次......如果允许我在运行时添加水果,我可能想切换到ArrayList。

5 个答案:

答案 0 :(得分:0)

有一个可用于此的安卓库,它可以解决您的问题。 https://code.google.com/p/android-amazing-listview/

答案 1 :(得分:0)

您可能想要使用自定义数组适配器。基本上,您需要在模型类中包装一行的所有数据。并使用 model 类的数组作为数据源创建一个数组适配器。

在自定义适配器部件上查看此链接以供参考:http://www.vogella.com/tutorials/AndroidListView/article.html#adapterown_custom

答案 2 :(得分:0)

在Android中创建设置有native support。它看起来就像用户应用程序设置活动一样。

或者如果想要自己的实现。你应该用model管理这个。创建一个将包装这3个数组的类,然后他将返回其状态的活动数组。

答案 3 :(得分:0)

最简单的方法是为每个组使用单独的listView。但是当你想将所有这些列表放在一个列表中时,我认为你应该使用BaseAdapter并阅读大约2种方法:getViewTypeCount() = 2,在你的情况下getItemViewType(int position)。主要问题是你必须计算哪个类型在哪个位置:

  1. 水果
  2. Apple
  3. 蔬菜
  4. 马铃薯
  5. 胡萝卜
  6. ...

答案 4 :(得分:0)

使用自定义适配器。这是一个例子 Android custom Row Item for ListView

此外,

  1. 创建head.xmlbody.xml

  2. 中做点什么
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View vi = convertView;
        if (vi == null) {
            if ( isHead() ) // check whether the view is head?
                vi = inflater.inflate(R.layout.head, null);
            else
                vi = inflater.inflate(R.layout.body, null);
        }
        TextView text = (TextView) vi.findViewById(R.id.text);
        text.setText(data[position]);
        return vi;
    }