1.先在传入Adapter的数据源mode里面标记下是否选中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public class ChooseschoolMode {
public String Schoolid; // 学校的编号
public String Name; // 学校的名称
boolean ischeck=false;//是否勾选
public String getSchoolid() {
return Schoolid;
}
public void setSchoolid(String schoolid) {
Schoolid = schoolid;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public boolean isIscheck() {
return ischeck;
}
public void setIscheck(boolean ischeck) {
this.ischeck = ischeck;
}
}
|
2.然后再adapter里面设置checkbox的状态为标记,同时回调出去到activity界面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
public class ChooseschoolsAdapter extends BaseAdapter{
private Context context;
private LayoutInflater inflater;
private List<ChooseschoolMode> datas;
private ChooseschoolsCallback callback;
public ChooseschoolsAdapter(Context context,List<ChooseschoolMode> datas,ChooseschoolsCallback callback) {
super();
this.context = context;
inflater =LayoutInflater.from(context);
this.datas = datas;
this.callback=callback;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return datas.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return datas.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Holder holder = null;
if (convertView == null) {
holder = new Holder();
convertView = inflater.inflate(R.layout.chooseschools_item, null);
holder.Schooname=(CheckBox)convertView.findViewById(R.id.chooseschool_cb);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
holder.Schooname.setText(datas.get(position).getName());
**holder.Schooname.setChecked(datas.get(position).isIscheck());//设置checkbox的选中为mode的标记**
holder.Schooname.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//回调
callback.Callback(position, isChecked);
}
});
return convertView;
}
public class Holder{
public CheckBox Schooname;
}
}
|
3.在activity里面的回调方法里拿到选中状态并设置数据源的标记,最后根据位置来循环所有的checkbox修改标记
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
public class Chooseschools extends BaseActivity implements ChooseschoolsCallback{
ListView listView;
List<ChooseschoolMode> date;
ChooseschoolsAdapter adapter;
ArrayList<String> schoolidlist;
Request request;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.chooseschools);
date = new ArrayList<ChooseschoolMode>();
request=new Request();
System.out.println(getCurrentUid()+"拿到的ID");
request.GetSchoollist(getCurrentUid(), this);
ChooseschoolMode mode = new ChooseschoolMode();
mode.setName("全部学校");
date.add(mode);
initView();
}
private void initView() {
setTopTitle("选择学校");
hideLeftIconButton();
Button btn1=(Button)findViewById(R.id.top_bar_left_btn_s);
btn1.setVisibility(View.VISIBLE);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Button btn2=(Button)findViewById(R.id.top_bar_right_btn);
btn2.setVisibility(View.VISIBLE);
btn2.setText("发送");
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//保存数据跳转界面
schoolidlist= new ArrayList<String>();
for (int i = 1; i < date.size(); i++) {
if (date.get(i).isIscheck()) {
schoolidlist.add(date.get(i).getSchoolid());
}
}
Bundle bundle = new Bundle();
bundle.putStringArrayList("schoolidlist", schoolidlist);
Intent intent = new Intent(Chooseschools.this,PublishActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
listView=(ListView)findViewById(R.id.chooseschoollistview);
adapter = new ChooseschoolsAdapter(this, date, this);
listView.setAdapter(adapter);
}
**@Override
public void Callback(int position, boolean isCheck) {
//System.out.println("返回成功");
date.get(position).setIscheck(isCheck);//设置选中标记
if (position==0&&isCheck==true) {
for (int i = 0; i < date.size(); i++) {
date.get(i).setIscheck(true);
}
adapter.notifyDataSetChanged();
}else if (position==0&&isCheck==false) {
for (int i = 0; i < date.size(); i++) {
date.get(i).setIscheck(false);
}
adapter.notifyDataSetChanged();
}
// for (int i = 0; i < date.size(); i++) {
// System.out.println(date.get(i).isIscheck());
// }
}**
@Override
public void resolveResultData(IResult result) {
System.out.println("请求成功");
if (result instanceof GetSchoollistResult) {
GetSchoollistResult getschoollistresult = (GetSchoollistResult) result;
for (int i = 0; i < getschoollistresult.Schools.size(); i++) {
ChooseschoolMode cMode= new ChooseschoolMode();
cMode.setName(getschoollistresult.Schools.get(i).Name);
cMode.setSchoolid(getschoollistresult.Schools.get(i).Schoolid);
date.add(cMode);
//System.out.println(getschoollistresult.Schools.get(i).Name);
}
adapter.notifyDataSetChanged();
}
}
}
|
声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息
原文作者: Mr河马