제가 이거때문에 일주일 동안 작업을 못하고 있는데요..... arraylist와 arrayadapter를 이용해서 체크된 항목 값만 받아오려고 합니다...
소스코드는 아래쪽이고요.... 어떻게 하면 체크된항목만 받아올 수 있을까요???
package com.knu.seeaht;
import java.util.ArrayList;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.*;
import android.view.View.OnClickListener;
import android.widget.*;
public class Gender_Select extends ListActivity implements OnClickListener {
// Data 지정 부분
class Gender_Data {
String gender;
boolean gender_checkbox;
Gender_Data(String gender) {
this.gender = gender;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public boolean is_gender_checkbox() {
return gender_checkbox;
}
public void set_gender_checkbox(boolean gender_checkbox) {
this.gender_checkbox = gender_checkbox;
}
}
// Adapter 부분
class GenderAdapter extends ArrayAdapter<Gender_Data> {
ArrayList<Gender_Data> list;
public GenderAdapter(Context context, int viewId,
ArrayList<Gender_Data> list) {
super(context, viewId, list);
this.list = list;
}
// View 부분
@Override
public View getView(int position, View v, ViewGroup parent) {
if (null == v) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.gender_select_second, null);
CheckBox cb = (CheckBox) v
.findViewById(R.id.gender_select_checkbox);
cb.setFocusable(false);
cb.setClickable(false);
}
Gender_Data gen_d = list.get(position);
if (null != gen_d) {
TextView gen_text = (TextView) v
.findViewById(R.id.gender_select_textview);
CheckBox gen_check = (CheckBox) v
.findViewById(R.id.gender_select_checkbox);
gen_text.setText(gen_d.getGender());
gen_check.setChecked(gen_d.is_gender_checkbox());
}
return v;
}
}
// 아이템 클릭시 동작
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Gender_Data gen_d = list.get(position);
if (null != gen_d) {
gen_d.set_gender_checkbox(!gen_d.is_gender_checkbox());
l.invalidateViews();
}
}
ArrayList<Gender_Data> list;
private Button ok_btn;
private Button cancle_btn;
private Button select_btn;
// 메인 함수 부분
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gender_select);
select_btn = (Button)findViewById(R.id.gender_all_selector);
select_btn.setOnClickListener(this);
ok_btn = (Button) findViewById(R.id.gender_confirm);
ok_btn.setOnClickListener(this);
cancle_btn = (Button) findViewById(R.id.gender_cancle);
cancle_btn.setOnClickListener(this);
list = new ArrayList<Gender_Data>();
for (int i = 0; i < Notifications.array_gender.length; i++) {
list.add(new Gender_Data(Notifications.array_gender[i]));
}
GenderAdapter adt_gender = new GenderAdapter(this,
R.layout.gender_select_second, list);
setListAdapter(adt_gender);
}
// 버튼 클릭시 동작
public void onClick(View v) {
switch (v.getId()) {
case R.id.gender_all_selector:
break;
case R.id.gender_confirm:
finish();
break;
case R.id.gender_cancle:
finish();
break;
}
}
}
아답터에 getCheckedList() 같은 메쏘드 하나 만들어서 내부적으로 체크해서 리턴 시키도록 하면 되지요~