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" />

 

 

정말 쉽군.. :)