package com.androind;
import java.util.ArrayList;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.TextView;
public class Checkbox_test extends ListActivity {
    data selectedItem;
    
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.main);
	    
	    ArrayList<data> list = new ArrayList<data>();
		for(int i = 0; i < 20; i++) {
			data mi = new data("test"+i,"test");
			list.add(mi);
		}
		customAdapter mAdapter = new customAdapter(this,R.layout.data_row, list);
		setListAdapter(mAdapter);
	}
	
	class data {
		private String id;
		private String subject;
		
		public data(String _id, String _subject) {
			this.id = _id;
			this.subject = _subject;
		}
		
		public String getId() {
			return id;
		}
		
		public String getSubject() {
			return subject;
		}
	}
	
	private class customAdapter extends ArrayAdapter<data> {
		private ArrayList<data> listItem;
		
		public customAdapter(Context context, int textViewResourceId, ArrayList<data> _listItem) {
            super(context, textViewResourceId, _listItem);
            this.listItem = _listItem;
		}
		
	    @Override
	    public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if(v == null) {
                LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.data_row, null);
            }
            data mi = listItem.get(position);
            if(mi != null) {
            	CheckBox cb = (CheckBox) v.findViewById(R.id.checkBox1);
            	cb.setFocusable(false);
            	TextView tsubject = (TextView) v.findViewById(R.id.textView_subject);
            	tsubject.setText(mi.getSubject());
            }
            return v;
	    }
	}
}


코드는 위와 같습니다. 불필요한 코드를 삭제하고 간단하게 작성했습니다.

검색을 통해서 알아낸 바로는 "Adapter에서 getView로는 현재 출력되는 리스트의 포지션 밖에 얻어올 수 없고 스크롤 시 포지션이 변경되므로 체크박스가 클릭될 때 해당 값을 ArrayList 형태로 저장하여 관리하는 방법이 있다." 입니다.


질문은 몇번째 체크박스가 클릭되는지 어떻게 알 수 있나요?

체크박스 리스너는 포지션 값을 전달받지 않는 것 같은데요...


ListView와 CheckBox를 연동하여 onListItemClick 메소드를 통하면 가능 할 것 같긴한데...

제가 구현하고 싶은 부분은 리스트와 체크박스를 각각 다르게 이벤트를 주고 싶다는 것 입니다.

리스트를 클릭하면 내용이 보여지고, 체크박스는 체크한 항목에 대해서 일괄 삭제 같은 처리를 하기 위함입니다.


답변 부탁드리겠습니다.