【问题标题】:Android ListView ArrayAdapter notifyDataSetChanged() not always workAndroid ListView ArrayAdapter notifyDataSetChanged() 并不总是有效
【发布时间】:2012-10-28 22:36:07
【问题描述】:

我有一个连接到远程服务器并从中获取数据的应用程序。

根据这些数据,我对我的 ListView 连接对象进行了一些更改,并且我正在使用 notifyDataSetChanged() 方法来刷新我的 ListView 并反映我的更改。

不幸的是该方法并不总是刷新列表。

onUpdate() 应该刷新列表。

@Override
public void onUpdate() {
    runOnUiThread(updateClientsInRangeRunnable());  
}

private Runnable updateClientsInRangeRunnable()
{
    Runnable run = new Runnable() {

        @Override
        public void run() {
            updateClientsInRangeList(); 
        }
    };
    return run;
}

public void updateClientsInRangeList()
{
    setClientsInRangeList();
    listArrayAdapter.notifyDataSetChanged();
}

每当我想刷新列表时都会调用 onUpdate() 方法,但并不总是这样做... 所做的更改是 ListView 表示的对象内部的属性更改,但只有在我重新加载 ListView 时更改才会刷新

有什么原因吗??

【问题讨论】:

    标签: java android listadapter


    【解决方案1】:

    从您显示的代码中很难判断,但 setClientsInRangeList() 是否可能实际上未能找到任何新数据?

    【讨论】:

    • 实际上它并没有真正做任何事情......它唯一的作用是获取对 clientsInRange 全局列表的引用(这实际上与之前引用的列表相同).. 新数据是对象内部的一些内部属性,这些属性可能会影响 ListView
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多