0

タブレイアウト内のActivity内にlistViewがあります。アイテムを長押しすると、アイテムの名前を変更するオプションが表示されます。アイテムの名前が変更されると、アクティビティが再開されるまで変更は表示されません。

新しいインテントを作成してアクティビティを再度開くだけで問題を解決しようとしましたが、そのアクティビティはタブレイアウト内にあるため、機能しません。また、tabLayoutアクティビティを再度開いてみましたが、タブ2内のlistViewを更新しようとしているときに、自動的にタブ1に移動します。

それで、 updateListView() メソッドを作成して解決しようとしました。

public void updateListView(){
    listAdapter.clear();
    listAdapter.addAll(recordedFilesArray);
    listAdapter.notifyDataSetChanged();
}

しかし、それもうまくいきません。この方法を使用すると、listView が完全にクリアされ、結果を確認するためにアクティビティを再起動する必要があります。

それで、アクティビティを再開せずに listView の変更を確認するために何ができるか知っている人はいますか? ちなみに参考になればListView(ArrayList)をテキストファイルから読み込んでいます。

4

4 に答える 4

0

別のアダプタ クラスを作成し、その getView() 関数を実装してこれを管理できます。アクティビティは、配列リストをアダプターに渡します。アダプターの getView() は、リストの内容を表示します。

リストが変更されたら、アダプターを再初期化する必要があります。そのため、 getView() は常に更新されたデータを画面に表示します。

于 2013-08-19T14:48:05.683 に答える
0

問題が見つかりました。アクティビティが再開されるまで、ArrayList は変更されませんでした。ArrayList の要素を変更するには、arrayList.set() を呼び出す必要がありました。今では正常に動作します。

私のコード:

recordedFilesArray.set(toDelete, input.getText().toString()); //toDelete is arg2 variable (onLongItemClickListener)
listAdapter.notifyDataSetChanged();
于 2013-08-22T18:47:27.113 に答える
0

アイテムの名前を変更するには、ArrayList でアイテム オブジェクトを変更してから、 を呼び出しますadapter.notifyDataSetChanged()

于 2013-08-19T14:57:40.650 に答える