ListView
은 새로 고침되지 않지만 어댑터가 다시 설정되면 새로 고침됩니다.<code>notifyDataSetChanged();</code>이 호출 될 때 ListView가 notifyDataSetChanged에서 새로 고침되지 않음
내 활동 내에서 onCreate
내 ListView
과 어댑터를 초기화합니다. 그런 다음 매초마다 새 값을 확인하는 Hanler
이 있습니다. listview.setAdapter(arrayAdapter);
이 작동하지만 arrayAdapter.notifyDataSetChanged();
은 아무 것도하지 않습니다. 나는 그것을 할 수있는 올바른 방법이라고 읽고, 어쨌든도 setAdapter
경우 작동 않기 때문에, 그래서
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
으로 그 일을하는 방법 궁금 : 여기
편집 :
명확히하는 것, 나는 myIntegers에 더 많은 값을 추가하고있다.
기존 어댑터를 수정 한 코드를 볼 수 있습니까? 해당 메서드를 호출하여 어댑터를 변경하고 있습니까? 또는 myIntegers 데이터 세트를 수정하고 있습니까? – Joel
myIntegers에 더 많은 값을 추가하는 중 –
대신 adapter.add() 메소드를 사용하여 값을 추가하십시오. 그 어댑터를 만드는 데 사용 된 배열을 수정 한 다음 뷰를 업데이트 할 업데이트 된 인스턴스를 보유 할 것으로 기대한다고 생각하지 않습니다. – Joel