带有setListAdapter的Android异步类

时间:2011-11-11 05:01:38

标签: android android-context listadapter

我有一个带有内部受保护类的Activity类,它扩展了AsyncTask。当我单击按钮然后根据该数据显示列表时,我试图让AsyncTask在后台加载数据。

这是我的setListAdapter代码:

setListAdapter(new ArrayAdapter<String>(this, R.layout.list_row, 
                R.id.rowtextview, testArr.toArray(test2)));

问题是我不能只将setListAdapter粘贴到AsyncTask类中,因为它需要外部类的上下文,它唯一可以放在外部Activity类的onCreate()中。如果它在onCreate中,它只能使用一次而且不是动态的。我不确定每次单击按钮并搜索新内容时,如何重新加载列表。

2 个答案:

答案 0 :(得分:2)

您的自定义内部AsyncTask未标记为静态对吗?这意味着它实际上保存了对父类的引用,即您的Activity。所以你可以使用:

setListAdapter(new ArrayAdapter<String>(YourActivity.this, R.layout.list_row, 
                R.id.rowtextview, testArr.toArray(test2)));

答案 1 :(得分:1)

简单,使适配器成为实例变量并对其进行扩展(平凡)以添加自定义updateData(newData)方法。在此方法中,您可以更新数据并致电notifyDatasetChanged()。而且你已经完成了!这样,您只需设置一次适配器,并在updateData()返回时调用AsyncTask