小编Web*_*hen的帖子

最佳实践:持续更新ArrayAdapter

我有一个服务,它从Web获取一些数据并更新一个"存储"在应用程序中的列表.

因此,我可以从主活动访问它并将其用于我的ArrayAdapter.

更新数据时,列表中引用的项目会更改.

我的问题是,在主要活动中更新适配器中的数据的最佳做法是什么?

我有两个解决方案,但我不知道它们是否正确.除此之外,我想实现一个不使用太多电池的版本!

第一个:每秒调用一次的线程,用notifyDataSetChanged()更新适配器:

private void startListUpdateThread()  
{
    Thread ListManageThread = new Thread() {
        LinkItem listItem;
        public void run() {
            Log.d("DL", "List Update - start");
            while(true)
            {   
                runOnUiThread(UpdateGUIList);

                try {
                    Thread.sleep(1000); //5Sekunden!
                } 
                catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Log.e("DL", "ERROR: InterruptedException - " + e.getMessage());
                }
            }
        }
    };
    ListManageThread.start();  
}

private Runnable UpdateGUIList = new Runnable() {

    @Override
    public void run() {
        mFileAdapter.notifyDataSetChanged();
    }
};    
Run Code Online (Sandbox Code Playgroud)

第二:使用延迟的Handler post私有final Handler handler = new Handler(); …

multithreading android listview handler adapter

5
推荐指数
1
解决办法
715
查看次数

标签 统计

adapter ×1

android ×1

handler ×1

listview ×1

multithreading ×1