2014-09-20 117 views
0

我想在啓動應用程序時更改導航抽屜listview內容。我嘗試使用onStart()方法執行的AsyncTask來完成此操作,但顯示的導航抽屜列表始終爲空。這是我的代碼:更改導航抽屜清單onstart

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     new UpdateTask().execute(); 
     setContentView(R.layout.activity_main); 

     mTitle = mDrawerTitle = getTitle(); 
     navMenuTitles = getResources().getStringArray(R.array.menu_array); 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerList = (ListView) findViewById(R.id.left_drawer); 


     // set a custom shadow that overlays the main content when the drawer opens 
     mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 
     // set up the drawer's list view with items and click listener 
     mDrawerList.setAdapter(new ArrayAdapter<String>(this, 
       R.layout.drawer_list_item, partite)); 
     mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

在onPostExecute方法我填的是適配器(List<String> partite = new ArrayList<String>();)以這樣的方式

@Override 
     protected void onPostExecute(String result) { 
      partite.add(partita1.toUpperCase()); 
      partite.add(partita2.toUpperCase()); 
      partite.add(partita3.toUpperCase()); 
      partite.add(partita4.toUpperCase()); 
      partite.add(partita5.toUpperCase()); 
      partite.add(partita6.toUpperCase()); 
      partite.add(partita7.toUpperCase()); 
      partite.add(partita8.toUpperCase()); 
      partite.add(partita9.toUpperCase()); 
      partite.add(partita10.toUpperCase()); 
      progressD.dismiss(); 
} 

抽屜式導航欄顯示這個項目只有在onCreate()方法我手動添加一個字符串像:

partite.add("hello"); 

然後,導航抽屜會有這個項目和其他人添加在異形分析。 我該如何解決這個問題?

+0

您是否在適配器上調用'notifyDataSetChanged()'?你確定'onPostExecute()'正在執行嗎? – 2014-09-20 11:29:46

回答

0

您必須將重置適配器onpostexecute

mDrawerList.setAdapter(new ArrayAdapter<String>(this, 
       R.layout.drawer_list_item, partite)); 

,你應該調用notifyDataSetChanged()的適配器。

+0

有史以來最佳答案!謝謝! – 2014-09-20 12:48:46

+0

歡迎兄弟。全部最好 – 2014-09-21 04:06:22