[Android] AdapterView - 2 Android 2011. 12. 19. 15:25
리스트 뷰에서는 항목들을 각각이 편집이 가능하다.

다음은 리스트 뷰를 입력에 따라 추가 삭제 하는 내용이다.

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
    >
        <EditText
            android:id="@+id/text"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_weight="4"    
        />
        <Button
            android:id="@+id/add"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_weight="3"    
         android:text="add"
        />
        <Button
            android:id="@+id/del"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_weight="3"
         android:text="delete"    
        />
    </LinearLayout>
    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />
</LinearLayout>

java 코드

ArrayList<String> arr;
 ArrayAdapter<String> adapter;
 ListView list ;
    /** Called when the activity is first created. */
 @Override   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        arr = new ArrayList<String>();
        arr.add("first");
        arr.add("second");
        arr.add("third");
       
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,arr);       
       
        list = (ListView)findViewById(R.id.list);
        list.setAdapter(adapter);       
        list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        list.setDivider(new ColorDrawable(0xffffff00));
        list.setDividerHeight(2);
       
        list.setOnItemClickListener(i_listener);
        findViewById(R.id.add).setOnClickListener(b_listener);
        findViewById(R.id.del).setOnClickListener(b_listener);
    }
 
 AdapterView.OnItemClickListener i_listener = new AdapterView.OnItemClickListener() {
  public void onItemClick(AdapterView parent, View view, int position, long id){
   Toast.makeText(ImageViewActivity.this, "Select : " + arr.get(position), Toast.LENGTH_SHORT);
  } 
 };
 
 Button.OnClickListener b_listener = new View.OnClickListener() {
  
  @Override
  public void onClick(View v) {
   EditText ed = (EditText)findViewById(R.id.text);
   switch(v.getId())
   {
    case R.id.add:
     String text = ed.getText().toString();
     if(text.length()!=0)
     {
      arr.add(text);
      ed.setText("");
      adapter.notifyDataSetChanged();
     }
     break;
    case R.id.del:
     int id = list.getCheckedItemPosition();
     if(id!=ListView.INVALID_POSITION)
     {
      arr.remove(id);
      list.clearChoices();
      adapter.notifyDataSetChanged();
     }
     break;
   }
  }
 };

여기에서 지금 SINGLE_CHOICE 로 된 것을 MULTIPLE_CHOICE 로 바꿔주면 한거번에 다수를 지울 수도 있다.