어댑터로 목록보기를 동적으로 업데이트
이 자습서에서는 잘 작동하는 SimpleAdapter를 사용하지만 새 데이터가 입력 될 때 어댑터의 배열을 업데이트해야합니다.
SimpleAdapter가 아닌 다른 것을 사용하여 ListView를 업데이트하는 방법을 안내해 주시겠습니까?
ArrayList에서 지원 하는 ArrayAdapter를 사용하십시오 . 데이터를 변경하려면 목록의 데이터를 업데이트하고 adapter.notifyDataSetChanged ()를 호출하면됩니다 .
고유 한 어댑터를 만드는 경우 주목할만한 추상 함수가 하나 있습니다.
public void registerDataSetObserver(DataSetObserver observer) {
...
}
주어진 관찰자를 사용하여 시스템에 업데이트를 알릴 수 있습니다.
private ArrayList<DataSetObserver> observers = new ArrayList<DataSetObserver>();
public void registerDataSetObserver(DataSetObserver observer) {
observers.add(observer);
}
public void notifyDataSetChanged(){
for (DataSetObserver observer: observers) {
observer.onChanged();
}
}
SimpleAdapter 및 ArrayAdapter와 같은 것이 있으며 모든 작업을 수행 할 필요는 없지만 기쁘지 않습니까?
SimpleListAdapter는 주로 정적 데이터에 사용됩니다! 동적 데이터를 처리하려면 데이터가 데이터베이스에서 들어오는 경우 ArrayAdapter , ListAdapter 또는 CursorAdapter를 사용하는 것이 좋습니다 .
다음 은 ListAdapter의 바인딩 데이터를 이해 하는 데 유용한 자습서입니다.
이 SO 질문 에서 언급했듯이
대부분의 사람들은 사용을 권장 notifyDataSetChanged()하지만 이 링크가 매우 유용하다는 것을 알았습니다 . 실제로 사용 clear하고 add더 적은 메모리 공간을 사용하고 더 많은 응답 앱을 사용하여 동일한 목표를 달성 할 수 있습니다.
예를 들면 :
notesListAdapter.clear();
notes = new ArrayList<Note>();
notesListAdapter.add(todayNote);
if (birthdayNote != null) notesListAdapter.add(birthdayNote);
/* no need to refresh, let the adaptor do its job */
참고 URL : https://stackoverflow.com/questions/5320358/update-listview-dynamically-with-adapter
'Program Club' 카테고리의 다른 글
| "?"를 숨기거나 삭제하려면 어떻게해야합니까? (0) | 2020.11.03 |
|---|---|
| asp.net에서 영구 쿠키를 만드는 방법은 무엇입니까? (0) | 2020.11.03 |
| 스레드 안전 C # 싱글 톤 패턴 (0) | 2020.11.03 |
| 로컬 저장소에서 업스트림을 제거하는 힘내 (0) | 2020.11.03 |
| Flask에서 매시간 실행되도록 함수 예약 (0) | 2020.11.03 |