HttpConnect时如何刷新视图?

时间:2018-08-14 02:51:48

标签: android http view refresh

从网络接收信息并将该数据附加到视图。

使用离子库

private void getListInfo() {

    Ion.with(getApplicationContext())
            .load("POST", "URL..")
            .setBodyParameter("Parameters", "Parameters")
            .asString()
            .withResponse()
            .setCallback(new FutureCallback<Response<String>>() {
                @Override
                public void onCompleted(Exception e, Response<String> result) {

                    if (e != null) {
                        e.printStackTrace();
                    } else {

                        int resultCode = result.getHeaders().code();
                        String resultInfo = result.getResult();

                        if (resultCode == 200) {

                            Log.d("EntrantInfo", resultInfo);

                            Gson gson = new Gson();
                            Type type = new TypeToken<List<Data>>() {
                            }.getType();

                            listItems = gson.fromJson(resultInfo, type);
                            Adapter.setItems(listItems);
                            Adapter.notifyDataSetChanged();
                            textview.setText(data);

                        }

                    }

                }
            });

}

因此,我在getListInfo()处调用onCreate()方法。

我移动了“ A”活动,我完全看不到数据。

在回收站视图或列表视图中,使用notifyDataSetChanged(),但我看不到列表。

但是,当我再次移回并移动“ A”活动时,我可以看到数据并查看。

所以我认为我已经掌握了信息,但是在该视图中并没有更新。

现在,当我从服务器获取信息时如何查看视图?

1 个答案:

答案 0 :(得分:1)

您可以使用SwipeRefreshLayout在swipe上刷新数据: SwipeRefreshLayout

将数据加载功能添加到SwipeRefreshLayout.OnRefreshListener

您可以设置TimerTask来刷新数据

TimerTask timerTask;
Timer timer;
timerTask = new TimerTask() {
        @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    //load your data
                    getListInfo();
                }
            });
        }
    };
    timer = new Timer();
    timer.scheduleAtFixedRate(timerTask, 0, 200);

并确保取消计时器onPause()

@Override
protected void onPause() {
    if(timer != null){
        timer.cancel();
    }
    super.onPause();
}