/ / ListViewインフレ/保存 - アンドロイド、リストビュー、グリッドビュー

ListViewインフレーション/保存 - アンドロイド、リストビュー、グリッドビュー

私はユーザーがImageButtonsのGridViewを持っています次のビューであるリストビューに追加する要素を選択できます。ユーザーはGridViewから複数の選択をする必要があります。これは、2つのビュー間を行き来して、それらの選択をリストビューに追加する必要があることを意味します。 ListViewを、新しい選択肢とともにすでに選択されている要素で再展開する方法を知る必要があります。基本的に、私はリストの内容を保存してから別の選択が行われたときに内容を膨らませる方法に苦しんでいます。私はArrayAdapterを使用しようとしましたが、私は失敗しました。

回答:

回答№1は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。 ListDataViewの表示を更新する必要があることをArrayAdapterに通知するには、notifyDataSetChanged()を使用します。

...
// 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 それらの間をナビゲートするとき。意図的にそれらの間にArrayListを渡すことができます。