ListView
内部で aを使用していますfragment
が、ListView の更新に問題があります。
これは、私のアダプターを設定するために使用するコードですListView
adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1,
((TabNavigation)this.getActivity()).getItems());
setListAdapter(adapter);
ここgetItems()
で、名前付きアイテムの文字列配列のゲッターです:
items= new String[]{"item 1", "item 2", "item 3", "item 4", "item 5", "item 6"};
この時点で、すべて正常に動作しています。リストに 6 つの項目が表示されています。
さて、この方法でアレイを更新しようとすると:
items[0]="injected item";
notifyDataSetChanged()
リスト内のアイテムが正しく変更され、最初の要素としてアイテム1の代わりに文字列が挿入されたアイテムが表示されるため、アダプターを呼び出すよりもすべて正常に動作します。ただし、その命令の代わりに次を使用する場合:
items= new String[]{"injected item", "item 2", "item 3", "item 4", "item 5", "item 6"};
アダプターを介して呼び出すよりもnotifyDataSetChanged()
、リストは更新されません。
これは参考値の経過によると思います。初めてアダプターを設定したときに渡された配列のコピーをアダプターが参照し続けているようです。実際、私が使用する場合:
temp= new String[]{"injected item", "item 2", "item 3", "item 4", "item 5", "item 6"};
System.arraycopy(temp, 0, items, 0, temp.length);
listView は正しく更新されます。ただし、元の配列とまったく同じ長さを使用する必要があります。
したがって、実際の質問は次ListView
のとおりです。リスト内のアイテムの数を変更する必要がある場合、どうすれば更新できますか?