ListView
が呼び出されたときに更新されないようですがnotifyDataSetChanged();
、アダプタが再度設定されたときに更新されます。
アクティビティでは、自分とアダプタ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
、更新するたびにリストビューが最初にジャンプします。
編集:
明確にするために、myIntegersにさらに値を追加しています。