根据条件将2个不同的列表设置为微调器

时间:2016-06-27 06:48:08

标签: android arraylist android-arrayadapter android-spinner

我有2 ArrayList&想要根据条件设置其中一个。但是,它没有被设定。

onCreate()内,我定义了ArrayAdapter&其中一个基于条件的列表。第一次它工作,但下次我更新列表&尝试使用notifyDataSetChanged()再次设置然后没有工作&微调器在DD中显示空白列表。

伪代码在

之下
list1, list2;
flag = True/False;
arraydapter(context, res, flag ? list1 : list2);

refreshList() {
if (flag)
list1.clear();
else
list2.clear();

addDataInList();
}

addDataInList() {
if (flag)
list1.add(something);
else
list2.add(something);

adapter.notifyDataSetChanged();
}

2 个答案:

答案 0 :(得分:0)

修改list1 / list2不会修改已传递给数组适配器的列表。

在调用notifydatasetchanged()之前,您必须在数组适配器中设置此新数据,或者您需要创建新的适配器。

我建议使用一个名为setData的函数替换arrayadapter中的列表并调用notifydatasetchanged。

答案 1 :(得分:0)

问题是适配器只设置一次。由于适配器引用list1list2,因此当flag翻转时,Spinner仅包含空格。

因此,只使用一个列表。我相应地调整了你的伪代码:

list;
flag = True/False;

onCreate() {
    arraydapter(context, res, list);
}

refreshList() {
    list.clear();

    if (flag)
        list.add(something);      // i.e. list1 contents
    else
        list.add(something_else); // i.e. list2 contents

    adapter.notifyDataSetChanged();
}