2011-05-24 66 views
4

之后我有一个作为活动的一部分,创造了一个ExpandableListView:ExpandableListView未更新的AsyncTask执行完毕

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.news); 

    // create the exandable list view widget 
    newsListAdapter = new NewsListAdapter(this.getApplicationContext());  

    newsListView = (ExpandableListView) findViewById(R.id.news_list_view); 

    newsListView.setAdapter(newsListAdapter); 

    final Button homeButton = (Button) findViewById(R.id.home_btn); 

    // go back to the home page 
    homeButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) {     
      startActivity(new Intent(view.getContext(), HomeActivity.class)); 
     } 
    }); 

    newsListView.setOnGroupClickListener(new OnGroupClickListener() { 
     public boolean onGroupClick(ExpandableListView parent, View view, int groupPosition, long arg3) { 
      return false; 
     } 
    }); 

    newsListView.setOnChildClickListener(new OnChildClickListener() { 
     public boolean onChildClick(ExpandableListView parent, View view, 
            int groupPosition, int childPosition, long id) { 
      return false; 
     } 
    }); 

    showLoadingProgressDialog(); 

    downloadRssFeedTask = new DownloadRssFeedTask(); 

    downloadRssFeedTask.execute(); 
} 

,你可以从代码中看到,它熄灭,确实从RSS拉在一个AsyncTask。

的的AsyncTask完成,进度对话框被驳回,活动被告知该任务已完成:

private void responseReceived(Channel newsResponse) { 
    if (newsResponse != null)   
     newsListAdapter.buildView(newsResponse); 
    } 
    else { 
    Toast toast = Toast.makeText(this.getApplicationContext(), 
          "There is no news available at this time.", 
          Toast.LENGTH_LONG); 

     toast.show(); 
    } 
} 

然而,ExpandableListView不重绘/加载数据后刷新本身,它是一个黑屏。你如何让ExpandableListView使用RSS数据来刷新自己?我试过invalidaterefreshDrawableState,但没有欢乐。

想法?

+0

Doh!同时感叹不会得到最后两个小时的生命回复> 神奇的答案是Adapter类中的notifyDataSetChanged()。 – 2011-05-24 20:07:34

回答

3

我想你忘记了在下载RSS提要之后忘记了在适配器上调用notifyDataSetChanged()方法(可能你应该在AsyncTask的方法中调用它)。

1

这应该工作。

newsListAdapter.notifyDataSetChanged()