2011-07-21 6 views
1

私は初心者のAndroid開発者ですが、タブごとにアクティビティを使用して2つのタブを持つAndroidアプリケーションを作成しようとしています。これは、それがどのように動作するかを基本的には次のとおりです。別のタブにあるListViewを更新してください

  • タブAが1つのボタン
  • タブBは1つのリストビュー
  • ユーザーがTab Aのボタンをクリックすると、アプリケーションがでListViewコントロールに値を入れる必要がありますがありましたタブB

私の質問は、タブAのボタンをクリックしたときにタブBのリストビューを更新するにはどうすればいいですか?私はどのようにボタンがあるが、私のアプローチはListViewが別のタブにあるときに動作しませんが、同じタブ上にあるときListViewに値を配置する方法を知っています。私は...

ListView myListInTabB = (ListView)findViewById(R.id.list_on_tabB); 

を試みたが、うまくいきませんでした: -/

任意の提案? ありがとうございます。

+0

これを参照してください:http://stackoverflow.com/questions/1620053/how-can-refresh-listview-when-tab-in-android –

+0

私の答えをチェックしてください私はそれが今より良いと思います – Nitin

答えて

0

あなたはそうしません。基礎となるアダプターに最新のデータがあることを確認してください。カーソル上でrequery()を呼び出すとトリックが実行され、自動的にListViewに関連付けられたListViewが更新されます。

編集:データが古くなったことをリストに知らせるには、notifyDataSetChanged()を使用します。

+0

これは、追加するのは、notifyDataSetChanged()を呼び出してアダプタに新しいデータを表示させる必要があるということだけです。 – Pyrodante

+0

実際、requery()は推奨されていません。新しいCursorを作成してアダプタに再接続し、その基になるデータセットが変更されたことをアダプタに通知することが推奨されています。 http://developer.android.com/reference/android/database/Cursor.html#requery%28%29を参照してください。 –

+0

ありがとう、本当に助けました。 – vegidio

0

アクティビティ間で特定の作業をしていない限り、実際にはこれに対して別個のアクティビティが必要なのかどうかはわかりません。 Androidソリューションで表示されるほとんどのタブソリューションは、現在表示されているタブに関連しないビューを非表示にするだけで動作します。これを実現するために役立つ「可視性」プロパティがあります。また、すべてのビューが同じアクティビティにあることを確認することで、可視性に関係なく常にそのオブジェクトにアクセスできます。

関連する問題