REST和列表视图刷新

时间:2010-07-22 15:37:38

标签: android rest

在我的应用中,我与listviews有不同的活动。数据来自具有REST方法的服务器,当我启动应用程序时,它只执行一次。

我想设置的模式是使用本地已有的JSON预先填充所有列表视图,并且并行地启动一个使用我的REST方法获取新JSON文件的线程,然后更新列表视图。

现在,当我启动应用程序时,我会解析我的JSON文件,并构建所有对象列表。我稍后以静态方式从我的列表适配器访问它们。

所以我想知道启动这个REST线程的最佳方法,并更新listview。我应该使用AsyncTask吗?服务?然后,当我更新我的本地JSON时,我必须重新解析它们,更新对象列表,并调用我的适配器NotifyDataChanged?

由于

2 个答案:

答案 0 :(得分:1)

所以我找到了解决问题的完美方案 我在我的AsyncTask的onPostExecute()中使用了sendBroadcast(),并且在我需要通知的所有活动中都使用了broadcastReceiver:

public class ConvenientActivity extends Activity {
    ...
    ...
    public class RefreshReceiver extends BroadcastReceiver {
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(MyMainClass.REFRESH_INTENT)) {
                mAdapter.refreshList();
            }
        }
    }
}

这很简单,效果很好。

答案 1 :(得分:0)

所以似乎问题需要细节,所以我要解释问题是什么。

当我启动我的应用程序时,我放了一个启动画面,并且我在最后一次保存的本地解析我的JSON文件。然后我启动了应用程序,其中包含一个带有不同列表视图的选项卡活动,这些列表视图使用我从JSON解析中获得的数据。

在我启动应用程序的同时,我启动了一个查询Web服务的异步任务,并更新了我的本地JSON文件。然后我再次解析文件,我想通知已经启动的所有列表视图,他们必须刷新他们的数据。我真的不知道该怎么做。

以下是我的异步任务的代码

class UpdateTask extends AsyncTask{
    @Override
    protected Object doInBackground(Object... params) {
        // Gets all the JSON Files and save them in local
        mJsonClient.loadDistantJSON();

        // Updates the cache maps and lists
        fillsMaps();
        fillsLists(); 
        return null;
    }

    protected void onPostExecute(Object downloadReturn) {
        // Notify the listviews
            ;
    }
}

在包含listview的其他活动中,我以静态方式访问本地缓存列表:

    myAdapter = new MyBaseAdapter(this,
        SplashScreen.list,listview);

如果你愿意,我很乐意提供更多细节。

由于