1. 목적 : listview에 dynamic 하게 데이터를 추가/제거시, listview에서 이를 업데이트 할 수 있도록 한다.
2. 방법
2.1 변경사항을 업데이트하기 : 아래와 같이 listview에 연결된 adapter 객체의 notifyDataSetChanged() 함수를 호출하면 끝난다.
A. MessageAdapter class
public class MessageAdapter extends BaseAdapter { ... }B. Message 추가시 List View에 update 하도록 notifyDataSetChanged(); 를 호출한다.
public class MessageActivity extends Activity { MessageAdapter m_MsgAdapter=null; //... m_ListView = (ListView) findViewById(R.id.message_list_view); if( m_ListView != null) { m_ListView.setAdapter(m_MsgAdapter); } // adapter를 ListView에 설정 m_ListView.setAdapter(m_MsgAdapter); // list view에 item을 추가하기 위한 button Button btn = (Button) findViewById(R.id.btn_send); // button 에 OnClickListener btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // message is added ... // 아래 코드가 없으면, 버튼을 눌러도 ListView에 item에 추가 혹은 삭제되지 않는다. m_MsgAdapter.notifyDataSetChanged(); } }); //... }
2.2 List Auto Scroll (가장 최근에 추가된 view를 끝에 보여주기 ) : 아래와 같이 android:transcriptMode 를 추가하면 된다.
<LISTVIEW android:transcriptMode="alwaysScroll" android:layout_weight="1" android:layout_height="0dp" android:layout_width="match_parent" android:id="@+id/message_list_view" />
정말 쉽군.. :)
'Programming > Android' 카테고리의 다른 글
[Android] Java enum value 사용 및 참조 방법 (0) | 2015.06.03 |
---|---|
[Android] try/catch 구문 자동 삽입 (0) | 2015.05.21 |
[Android] Nexus5 에 롤리팝 이미지 수동 업데이트 (0) | 2015.05.14 |
[Android] Activity 클래스가 아닌 클래스(OnClickListener)에서 StartActivity 실행 방법 (0) | 2015.04.19 |
[Android Developing] 안드로이드 폰 부팅 완료 메시지 수신 (0) | 2015.04.12 |