更改导航抽屉列表onstart

时间:2014-09-20 11:16:06

标签: android android-asynctask navigation-drawer

我想在启动应用程序时更改导航抽屉列表视图内容。我尝试使用在onStart()方法中执行的AsyncTask来执行此操作,但显示的导航抽屉列表始终为空。这是我的代码:

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");

然后,导航抽屉将在asynctask中添加此项目和其他项目。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您必须在onpostexecute中重置适配器

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

你应该为适配器调用notifyDataSetChanged()。