0

タブホストで作成したアプリケーションがあります。クリックしたときにリストビュー(2番目のタブ)を更新する必要があります。このビューにはdbデータが含まれていますが、常に最新である必要があることは明らかです(アプリ全体で更新、挿入、削除などを行うため、どうすればよいですか?

これは、タブによって呼び出されるクラスのonCreateです。

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.bookmarks); 
    final Database info=new Database(this); 
    final Timer t = new Timer(); 
    info.open(); 
    final Cursor data=info.getData(); 
    final ListView listView1 = (ListView) findViewById(R.id.list_mia); 
    String[] from = new String[] {"contenuto"};
    int[] to = new int[] { android.R.id.text1 };
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1, data, from, to); 
    listView1.setAdapter(adapter);

これはタブクラスです(「犯罪クラスはブックマークです)

    super.onCreate(savedInstanceState);
    setContentView(R.layout.tabs);
    TabHost tabHost = getTabHost();
    // Tab per lettore
    TabSpec lettoretab = tabHost.newTabSpec("Lettore");
    lettoretab.setIndicator("Lettore", getResources().getDrawable(R.drawable.lettore));
    Intent lettoreIntent = new Intent(this, Lettore.class);
    lettoretab.setContent(lettoreIntent);
    // Tab per bookmarks
    TabSpec bookmarkstab = tabHost.newTabSpec("Bookmarks");
    bookmarkstab.setIndicator("Bookmarks", getResources().getDrawable(R.drawable.bookmarks));
    Intent bookmarksIntent = new Intent(this, Bookmarks.class);
    bookmarkstab.setContent(bookmarksIntent);
    // Tab per create
    TabSpec createtabs = tabHost.newTabSpec("Create");
    createtabs.setIndicator("Create", getResources().getDrawable(R.drawable.create));
    Intent createIntent = new Intent(this, Create.class);
    createtabs.setContent(createIntent);
    // Tab per feed
    TabSpec feedtabs = tabHost.newTabSpec("Feed");
    feedtabs.setIndicator("Feed", getResources().getDrawable(R.drawable.feed));
    Intent feedIntent = new Intent(this, Feeds.class);
    feedtabs.setContent(feedIntent);
    // Tab per actionmobileapp
    TabSpec actionmobileapptabs = tabHost.newTabSpec("App");
    actionmobileapptabs.setIndicator("App", getResources().getDrawable(R.drawable.actionmobileapp));
    Intent actionmobileappIntent = new Intent(this, Actionmobileapp.class);
    actionmobileapptabs.setContent(actionmobileappIntent);
    // Aggiungo i tabs
    tabHost.addTab(lettoretab);
    tabHost.addTab(bookmarkstab);
    tabHost.addTab(createtabs);
    tabHost.addTab(feedtabs);
    tabHost.addTab(actionmobileapptabs);

onResumeでコードをリコールしようとしましたが、成功しませんでした...

4

3 に答える 3

1
TabHost tabHost = getTabHost();
            Intent intent = new Intent(this, c);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);
            View tabIndicator = LayoutInflater.from(this).inflate(
                    R.layout.tab_indicator, getTabWidget(), false);
            TextView title = (TextView) tabIndicator.findViewById(R.id.title);
            title.setText(labelId);
            ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
            icon.setImageResource(drawableId);

            spec.setIndicator(tabIndicator);
            spec.setContent(intent);
            tabHost.addTab(spec);

addTab()内のTabActivityクラスにこれを追加します。

ありがとう....

于 2012-07-10T09:38:28.413 に答える
0

これはおそらくこれの複製です:

SimpleCursorAdapterがDBの変更で更新されない

使用したいLoaderManagerのAndroidドキュメントを確認する必要があります。

コード例を含むLoaderManagerクラスリファレンス

于 2012-07-10T09:36:07.723 に答える
0

'Activity'で' adpater '変数を公開し、onResumeこのメットを呼び出すと、新しく更新されたカーソルになります。その後に電話することを忘れないでください。adapter.swapCursor(c)cnotifyDataSetChanged()

于 2012-07-10T09:49:16.373 に答える