2016-12-09 11 views
0

У меня есть 2 вкладки с помощью TabHost, обе вкладки имеют listview. У меня есть настройка каждого списка, так что, когда я нажимаю на элемент, действие завершено, и проблема у меня возникает, так как мне приходится перезагружать приложение для обновления, которое будет отображаться на tab2, что я хочу, когда я открываю вкладку макет обновляется для вкладки на каждом открытии. Чтобы получить макет, я включаю его в свои вкладки XML.Tab refresh (TabHost)

Мой адаптер был настроен и работал отлично, когда в MainActivity проблема возникает только после добавления TabHost.

  // My contentMain 
       <LinearLayout 
       android:id="@+id/tab1" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" > 

       <include 
        android:id="@+id/Onglet1" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        layout="@layout/layouttab1" /> 

      </LinearLayout> 


      // My adapter 
      ArrayAdapter<Store1> adapter = new MyTitleAdapter(); 
      ListView myList = (ListView) findViewById(R.id.ListView); 
      adapterTitle.notifyDataSetChanged(); 
      myList.setAdapter(adapter); 


    TabHost.TabSpec spec = host.newTabSpec("Tab One"); 
    spec.setContent(R.id.tab1); 

    spec.setIndicator("First Tab"); 
    host.addTab(spec); 

    TabHost host = (TabHost)findViewById(R.id.tabHost); 
    host.setup(); 

    spec = host.newTabSpec("Tab Two"); 
    spec.setContent(R.id.tab2); 
    spec.setIndicator("Secong Tab"); 
    //host.setOnTabChangedListener(); 
    host.addTab(spec); 
+0

переопределить addontabselectedlistener() –

ответ

0

при добавлении элемента в ListView, вызовите один метод (сделать его самостоятельно) в адаптере

public void refreshWishlistAdapter() { 
itemList.clear(); 
itemList.addAll(dbHelper.getallWishlistItems()); 
itemsAdapter.notifyDataSetChanged(); 
} 
+0

Я добавил адаптер, не работает с TabHost – user3175140

+0

для tab1 и tab2, что вы использовали (фрагмент или acivity) ??? –

+0

иначе вставьте весь код здесь –

0

использовать этот метод в фрагменте, поэтому при переключении фрагментировать этот метод выполняет следующие действия:

private boolean isShown = false; 

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (getView() != null) { 
     isShown = true; 
     // fetchdata() show data when page is selected 
     fetchData(); 
    } else { 
     isShown = false; 
    } 
}