我有一个ImageButtons的GridView,用户可以在其中选择要添加到ListView的元素,即下面的View。用户需要从GridView中进行多项选择。这意味着他们必须在两个视图之间来回导航,将他们的选择添加到ListView。我需要知道如何使用已经选择的元素和新选项重新充气ListView。基本上,我正在努力如何保留列表内容,然后在进行另一个选择时膨胀内容。我一直在尝试使用ArrayAdapter,但我没有成功。
答案 0 :(得分:0)
在使用ListView时,忽略了使用notifyDataSetChanged()的必要性。下面是如何填充和刷新ListView的基本概述。
为元素列表创建一个ArrayList,一个ListView用于显示它们,以及一个ArrayAdapter来连接它们:
private ArrayList<String> mMyElements;
private ListView mMyListView;
private ArrayAdapter<String> mMyArrayAdapter;
设置ListView:
mMyListView = (ListView)findViewById(R.id.myListView);
mMyListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); // There are other ChoiceModes available,
// but I'm guessing this is the most likely one you want for your situation.
设置ArrayAddapter并将其分配给ListView:
mMyArrayAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_activated_1, mMyElements);
mMyListView.setAdapter(mMyArrayAdapter);
现在,您可以通过更改ArrayList中包含的内容来更改ListView中显示的内容。使用notifyDataSetChanged()向ArrayAdapter发出信号,告知它需要更新ListView的显示:
...
// Code which changes the elements contained in the ArrayList
// For example..
myElements.add(x);
myElements.remove(y);
...
// Notify the ArrayAdapter that it's ArrayList has changed.
mMyArrayAdapter.notifyDataSetChanged(); // This line is vital to get the altered ArrayList to display.
mMyListView.clearChoices(); // You may want to clear any old selections from the ListView when you refresh the display.
<强> <Additional>
强>
如果通过“重新膨胀”意味着您的GridView和ListView位于不同的Activites或Fragments中,那么您需要做的就是在它们之间导航时维护ArrayList myElements
。您可以在intent中传递ArrayList。