关于android中ListView首次加载数据问题

BernardXiong 发布于 2013/12/10 14:08
阅读 1K+
收藏 0

      我的android小app主要要实现一个类似微博一样的加载数据到纵向列表的功能。启动应用后,从远端通过HttpClient获取数据,然后将获取的数据加载到纵向列表里显示出来。之后下拉列表后就可以随时获取远端的最新数据在列表显示。

      因为android只允许一个UI线程,在程序首次获取数据时使用Handler消息机制,创建子线程进行远程调用数据、将获取的数据更新到页面的列表里。可是这里有个现象就是子线程远程调用数据完以前,主页面列表早已完成了加载,显示一个数据为空的列表。

       在我程序的mainActivity里onCreate方法里是这样的:

        @Override
        public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
             geneItems();//使用Handler机制加载数据,获取数据赋值给全局变量items

             mListView = (XListView) findViewById(R.id.xListView);
             mAdapter = new ArrayAdapter<String>(this, R.layout.list_item, items);
             mListView.setAdapter(mAdapter);
             mListView.setPullLoadEnable(true);
             mListView.setXListViewListener(this);
        }
       在代码里。geneItems()加载完数据之前,下面的ListView就继续执行了。然后ListView所需的适配器ArrayAdapter里参数items就是geneItems()远程加载完获取的数据。所以导致ListView加载完没有数据,也就是items为空。

如图:



希望大神们能帮我指点迷津,看看这个问题怎么处理呢,小弟在这里谢谢了!!!

加载中
0
BernardXiong
BernardXiong
Handler的handleMessage方法里面在加载完数据后adapter.notifyDataSetChanged()一下就行了,该方法会引起listview的重绘。
返回顶部
顶部