ListView
在调用 notifyDataSetChanged();
时似乎不会刷新,但在其适配器再次设置时会刷新。
在我的 Activity onCreate
中,我初始化了我的 ListView
和我的适配器。然后我有这个 Hanler
每秒检查一次新值。 listview.setAdapter(arrayAdapter);
有效,但 arrayAdapter.notifyDataSetChanged();
不执行任何操作。
代码如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.listView1);
arrayAdapter = new ArrayAdapter<Integer>(this,android.R.layout. simple_list_item_1, myIntegers);
lv.setAdapter(arrayAdapter);
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == DIS){
handler.sendEmptyMessageDelayed(DIS, 1000);
if(!refresh()){
handler.removeMessages(DIS);
}
}
}
};
public boolean refresh(){
if(ports.isEmpty()){
return false;
}else{
listview.setAdapter(arrayAdapter); //WORKS
arrayAdapter.notifyDataSetChanged(); // DOESN'T WORK
return true;
}
}
所以我想知道如何使用 notifyDataSetChanged
实现它,因为我读到这是正确的方法,而且即使 setAdapter
确实有效每次刷新时,它都会让我的 ListView 跳转到开头。
编辑:
为了澄清问题,我向 myIntegers 添加了更多值。
最佳答案
尝试使用 adapter.add()
方法添加值。我不认为您可以修改用于创建适配器的数组,然后期望它保存一个更新的实例来更新 View 。祝你好运!
关于android - ListView 不会在 notifyDataSetChanged 上刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11943365/