从SparseArray填充ListView

时间:2014-12-09 10:07:08

标签: java android listview

我是listviews和数组概念的新手。我基本上有一个名为shop.Clothes的SparseArray。 我基本上想用store.Clothes的元素填充我的listView。为了做到这一点,我明白我必须创建一个ArrayAdapter并将适配器的参数传递给listview。之后我必须检查shop.clothes是否包含一个值,如果是,它必须将它添加到listView。

爪哇:

ListView listView = (ListView)v.findViewById(R.id.list);
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.redeem_shop_list , shop.Clothes);
    listView.setAdapter(arrayAdapter);

    int key = 0;
    for (int i = 0; i < shop.Clothes.size(); i++) {
        key = shop.Clothes.keyAt(i);
        Object value = shop.Clothes.valueAt(i);
        value.toString();

        if(i==0){
            listView.add((String) value);
        }
    }

XML:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

</LinearLayout>

我似乎做错了什么,我得到了这些错误:

Cannot resolve constructor ArrayAdapter(SearchableShopList, int, android.util.SparseArray<java.lang.string>)

Cannot resolve method 'add(java.lang.String)'

有人能帮助我走正确的道路吗?

1 个答案:

答案 0 :(得分:0)

我以一种非常简单的方式解决了这个问题。我没有为SparseArray创建自定义适配器,而是将SparseArray的值传递给另一个数组,这就是诀窍!

ListView listView = (ListView)v.findViewById(R.id.list);
ArrayList<String> mylist = new ArrayList<String>();

    int key = 0;
    for (int i = 0; i < shop.Clothes.size(); i++) {
        key = shop.Clothes.keyAt(i);
        Object value = shop.Clothes.valueAt(i);
        value.toString();
        mylist.add((String) value);
    }

    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, mylist );
    listView.setAdapter(arrayAdapter);