我是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)'
有人能帮助我走正确的道路吗?
答案 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);