listviews 및 해당 어댑터에 대해 많은 질문이 있지만 올바르게 사용하고 있습니다. 그러나 이제 안드로이드 4.0.3 (ICS 및 일부 특정 레이아웃에서만)에서 (항상) 올바르게 업데이트되지 않는 listview가 있습니다.Android 4.0.3 ICS ArrayAdapter notifyDataSetChanged가 ListView를 업데이트하지 않습니다.
코드 : 활동의에서 onCreate에서
: 별도의 스레드에서
mListView = (ListView) findViewById(R.id.list);
mArrayAdapter = new CustomListAdapter(this, R.layout.row_layout);
// We update it manually, but leaving this default doesn't work either
mArrayAdapter.setNotifyOnChange(false);
mListView.setAdapter(mArrayAdapter);
은 내가 어댑터에 삽입, 추가 교체해야 새로운 데이터를받을 수 있습니다. simplicitly 지금 명확한를 사용하여 예를 대체 전체를 사용하는 경우 : 새로운 항목들이 목록에 표시되지만 업데이트가 모든 항목없이 수신되는 경우 수신
private void updateList() {
runOnUiThread(new Runnable() {
public void run() {
mArrayAdapter.clear();
for (CustomItem item: mLastReceivedItems) {
mArrayAdapter.add(item);
}
mArrayAdapter.notifyDataSetChanged();
}
});
}
. 어댑터가 실제로 비어있는 동안보기에는 항목이 계속 표시됩니다.
코드는 여전히 Android 2.3.7에서 작동하며 다른 레이아웃을 사용할 때 재현 할 수 없지만 중요한 차이점을 많이 볼 수는 없습니다.
많은 성능을 잃지 않고이 버그를 해결할 레이아웃 매개 변수 또는 어댑터 함수를 찾은 사람이 있습니까?
private void updateList() {
runOnUiThread(new Runnable() {
public void run() {
mArrayAdapter.clear();
for (CustomItem item: mLastReceivedItems) {
mArrayAdapter.add(item);
}
mArrayAdapter.notifyDataSetChanged();
// FIXME: Temp fix for ICS:
mListView.setAdapter(mListView.getAdapter());
}
});
}
I :
responseRequester의 유형 및 기능은 무엇입니까? –
어떤 유형의 항목 일뿐입니다. 어떤 종류의 종류가 어댑터와 목록보기에서 사용되는지는 관련이 없습니다 – Huupke
관련성 여부는 묻지 않았습니다. 나는 그 타입과 기능이 무엇인지 묻고있다. 단지 데이터 컨테이너입니까? 해당 코드 표시 –