我有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();
}
答案 0 :(得分:0)
修改list1 / list2不会修改已传递给数组适配器的列表。
在调用notifydatasetchanged()之前,您必须在数组适配器中设置此新数据,或者您需要创建新的适配器。
我建议使用一个名为setData的函数替换arrayadapter中的列表并调用notifydatasetchanged。
答案 1 :(得分:0)
问题是适配器只设置一次。由于适配器引用list1
或list2
,因此当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();
}