我有一个带有内部受保护类的Activity类,它扩展了AsyncTask。当我单击按钮然后根据该数据显示列表时,我试图让AsyncTask在后台加载数据。
这是我的setListAdapter代码:
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_row,
R.id.rowtextview, testArr.toArray(test2)));
问题是我不能只将setListAdapter粘贴到AsyncTask类中,因为它需要外部类的上下文,它唯一可以放在外部Activity类的onCreate()中。如果它在onCreate中,它只能使用一次而且不是动态的。我不确定每次单击按钮并搜索新内容时,如何重新加载列表。
答案 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
。