我是这里的新手,我已经在网上(以及在stackoverflow上)搜索答案,但我仍然在努力使其发挥作用。
我想做的是(1)使用异步任务更新我的列表和新的“帖子” - 从而允许用户在我将新帖子下载到他们的android时继续使用该应用程序。
我正在努力让更新任务发挥作用,它可能与明显的实施问题(或不是)挂钩。
我所拥有的是(1)一个自定义列表(它允许“拉动刷新” - 但正如所述,这是一个问题,此时它没有刷新任何数据)。 (2)自定义AsyncTask,理论上会在主屏幕上为主列表填充更多帖子。
以下是列表中的问题点:
listView.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener(listView) {
@Override
public void onRefresh() {
mylistAdapter.loadNewData(); //loads new data <-------------------
m_ptrlistView.postDelayed(new Runnable(){
@Override
public void run() {
m_ptrlistView.onRefreshComplete();
}
}, 2000);
//////////// 这是适配器中的“loadNewData”函数
public void loadNewData(PullToRefreshListView List){
//load new stuff
new AsyncFetchMore(list).execute();
// MANDATORY: Notify that the data has changed
notifyDataSetChanged();
return;
}
并且...我的asyncTask是扩展的实现
@Override
protected Object doInBackground() {
try {
//simulating a long task
Thread.sleep(5000);
} catch (InterruptedException e) {
Log.d("Notes", "Thread failed to sleep");
}
//create dummy posts for testing
for ( int i = 12; i < 24; i++ ) {
Post pNewPost = new Post();
pNewPost.setText("POST # " + i);
m_alNewPosts.add(pNewPost);
}
return null;
}
///////////////////////////////
也许我接近这一切都错了。我有疑虑...但我只是不知道下一步是什么,我在这里迷失了!你能给我一些提示吗?
答案 0 :(得分:0)
看起来你不会对你的异步任务返回的结果做任何事情。但在你去修复它之前,请考虑使用Loaders - 它们是异步的,专门针对你的purpouse - 获取Fragment / Activity的数据。这是documentation。如果你想要实现它们,你可能会有相当多的重构,但它是值得的 - 它是正确的方式。希望这有帮助。
答案 1 :(得分:0)
您在启动Async线程后立即调用notifyDataSetChanged(),该线程尚未填充您的数据。数据更新后调用notifyDataSetChanged()。查看SDK示例目录中ApiDemos中的示例。