android复选框删除、反选、全选以及取消
来源:互联网 发布:数据分析前途 编辑:程序博客网 时间:2024/05/17 13:41
//主界面
package com.bwie.test;
import java.util.ArrayList;import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import com.bwie.test.adapter.MyAdapter;
import com.bwie.test.adapter.MyAdapter.ViewHolder;
import com.bwie.test.bean.Person;
import com.bwie.test.httpUrlConnection.HttpUrlGetConnectinGet;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.app.Activity;
public class MainActivity extends Activity {
private ListView lv;
private List<Person> list;
private MyAdapter adapter;
private ImageView allCheckBox;
private int checkNum; // 记录选中的条目数量
private TextView selected;
private TextView fanxuan;
private TextView cancle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化控件
lv = (ListView) findViewById(R.id.lv);
allCheckBox = (ImageView) findViewById(R.id.de_chu);
selected = (TextView) findViewById(R.id.selectedCall);
fanxuan = (TextView) findViewById(R.id.fanxuan);
cancle = (TextView) findViewById(R.id.cancle);
// 全选
selected.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 遍历list的长度,将MyAdapter中的map值全部设为true
for (int i = 0; i < list.size(); i++) {
MyAdapter.getIsSelected().put(i, true);
}
// 数量设为list的长度
checkNum = list.size();
// 刷新listview和TextView的显示
dataChanged();
}
});
// 反选
fanxuan.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 遍历list的长度,将已选的设为未选,未选的设为已选
for (int i = 0; i < list.size(); i++) {
if (MyAdapter.getIsSelected().get(i)) {
MyAdapter.getIsSelected().put(i, false);
checkNum--;
} else {
MyAdapter.getIsSelected().put(i, true);
checkNum++;
}
}
// 刷新listview和TextView的显示
dataChanged();
}
});
// 取消
cancle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 遍历list的长度,将已选的按钮设为未选
for (int i = 0; i < list.size(); i++) {
if (MyAdapter.getIsSelected().get(i)) {
MyAdapter.getIsSelected().put(i, false);
checkNum--;// 数量减1
}
}
// 刷新listview和TextView的显示
dataChanged();
}
});
//删除
allCheckBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
for (int i = 0; i < list.size(); i++) {
Person p = list.get(i);
if (p.isCheck()) {
list.remove(i);
i--;
}
}
// 刷新listview和TextView的显示
dataChanged();
}
});
// 开启线程
new MyThread().start();
}
public class MyThread extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
list = new ArrayList<Person>();
try {
String str = HttpUrlGetConnectinGet.HGet();
Log.e("======", str);
JSONObject object = new JSONObject(str);
JSONArray jsonarray = object.getJSONArray("data");
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonObject = jsonarray.getJSONObject(i);
String channelName = jsonObject.getString("channelName");
Person p = new Person();
p.setChannelName(channelName);
list.add(p);
}
Message msg = new Message();
msg.obj = list;
Log.e("======++", list + "");
msg.what = 1;
myHandler.sendMessage(msg);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
public Handler myHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 1:
List<Person> mlist = (List<Person>) msg.obj;
adapter = new MyAdapter(MainActivity.this, mlist);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
// 取得ViewHolder对象,这样就省去了通过层层的findViewById去实例化我们需要的cb实例的步骤
ViewHolder viewHolder = (ViewHolder) arg1.getTag();
// 改变CheckBox的状态
viewHolder.ck.toggle();
// 将CheckBox的选中状况记录下来
MyAdapter.getIsSelected().put(arg2,
viewHolder.ck.isChecked());
// 调整选定条目
if (viewHolder.ck.isChecked() == true) {
checkNum++;
} else {
checkNum--;
}
}
});
break;
default:
break;
}
};
};
private void dataChanged() {
// 通知listView刷新
adapter.notifyDataSetChanged();
};
}
//adapter 界面
package com.bwie.test.adapter;
import java.util.HashMap;
import java.util.List;
import com.bwie.test.R;
import com.bwie.test.bean.Person;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;
public class MyAdapter extends BaseAdapter {
private Context context;
private List<Person> mlist;
private static HashMap<Integer,Boolean> isSelected;
public MyAdapter(Context context, List<Person> mlist) {
// TODO Auto-generated constructor stub
this.context = context;
this.mlist = mlist;
isSelected=new HashMap<Integer, Boolean>();
initData();
}
private void initData() {
// TODO Auto-generated method stub
for (int i = 0; i < mlist.size(); i++) {
getIsSelected().put(i,false);
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mlist.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mlist.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) {
// TODO Auto-generated method stub
//viewHolder的优化
ViewHolder viewHolder;
if (convertView==null) {
viewHolder=new ViewHolder();
convertView=View.inflate(context,R.layout.list_item,null);
viewHolder.tvname=(TextView) convertView
.findViewById(R.id.text_name);
viewHolder.ck=(CheckBox) convertView.findViewById(R.id.checkBox1);
convertView.setTag(viewHolder);
} else {
viewHolder=(ViewHolder)convertView.getTag();
}
viewHolder.tvname.setText(mlist.get(position).getChannelName());
viewHolder.ck.setChecked(getIsSelected().get(position));
viewHolder.ck.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked){
mlist.get(position).setCheck(true);
}else{
mlist.get(position).setCheck(false);
}
}
});
return convertView;
}
public static HashMap<Integer, Boolean> getIsSelected() {
return isSelected;
}
public static void setIsSelected(HashMap<Integer, Boolean> isSelected) {
MyAdapter.isSelected = isSelected;
}
public static class ViewHolder {
TextView tvname;
public CheckBox ck;
}
}
//person界面
package com.bwie.test.bean;
public class Person {
private String uid;
private String channelName;
private String channelKey;
private String descr;
private String createDate;
private String channelLogo;
private String channelVersion;
private boolean isCheck;
public Person(String uid, String channelName, String channelKey,
String descr, String createDate, String channelLogo,
String channelVersion, boolean isCheck) {
super();
this.uid = uid;
this.channelName = channelName;
this.channelKey = channelKey;
this.descr = descr;
this.createDate = createDate;
this.channelLogo = channelLogo;
this.channelVersion = channelVersion;
this.isCheck = isCheck;
}
/**
* @return the uid
*/
public String getUid() {
return uid;
}
/**
* @param uid the uid to set
*/
public void setUid(String uid) {
this.uid = uid;
}
/**
* @return the channelName
*/
public String getChannelName() {
return channelName;
}
/**
* @param channelName the channelName to set
*/
public void setChannelName(String channelName) {
this.channelName = channelName;
}
/**
* @return the channelKey
*/
public String getChannelKey() {
return channelKey;
}
/**
* @param channelKey the channelKey to set
*/
public void setChannelKey(String channelKey) {
this.channelKey = channelKey;
}
/**
* @return the descr
*/
public String getDescr() {
return descr;
}
/**
* @param descr the descr to set
*/
public void setDescr(String descr) {
this.descr = descr;
}
/**
* @return the createDate
*/
public String getCreateDate() {
return createDate;
}
/**
* @param createDate the createDate to set
*/
public void setCreateDate(String createDate) {
this.createDate = createDate;
}
/**
* @return the channelLogo
*/
public String getChannelLogo() {
return channelLogo;
}
/**
* @param channelLogo the channelLogo to set
*/
public void setChannelLogo(String channelLogo) {
this.channelLogo = channelLogo;
}
/**
* @return the channelVersion
*/
public String getChannelVersion() {
return channelVersion;
}
/**
* @param channelVersion the channelVersion to set
*/
public void setChannelVersion(String channelVersion) {
this.channelVersion = channelVersion;
}
/**
* @return the isCheck
*/
public boolean isCheck() {
return isCheck;
}
/**
* @param isCheck the isCheck to set
*/
public void setCheck(boolean isCheck) {
this.isCheck = isCheck;
}
public Person(){}
}
//数据请求界面
package com.bwie.test.httpUrlConnection;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public class HttpUrlGetConnectinGet {
public static String HGet(){
String result="";
String path="http://121.42.8.95:8090/AndroidServer/yk.json";
try {
HttpGet h=new HttpGet(path);
HttpClient httpclient=new DefaultHttpClient();
HttpResponse httpResponse = httpclient.execute(h);
if(httpResponse.getStatusLine().getStatusCode()==200){
HttpEntity httpEntity = httpResponse.getEntity();
result=EntityUtils.toString(httpEntity,"utf-8");
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return result;
}
}
- android复选框删除、反选、全选以及取消
- js--复选框--全选、反选、取消
- 复选框的全选,取消和反选
- 复选框联动效果以及全选非全选,反选
- jquery复选框全选,反选,自动勾选全选框,取消勾中全选框
- PHP实现复选框全选,反选,批量删除
- 复选框全选和反选 还有批量删除
- 复选框全选反选
- 复选框全选,反选
- 复选框全选/反选
- 复选框的一下额操作|全选 取消全选 反选 选中值
- 全选、取消选择、反选、删除
- 全选/取消复选框
- 复选框取消/全选
- 复选框全选、取消全选
- jQuery实现复选框全选/全部取消/反选/获得选择的值
- 复选框全选/取消全选 获得选中的val id 以及删除tr 增加tr 简单详解
- Android反选,全选,删除
- java 8.25总结
- C++中的Vector与map
- [PAT] B1043
- JQuery基础内容
- 图片验证码
- android复选框删除、反选、全选以及取消
- CoreData的简单使用<四、多个数据库>
- uboot简化SI工程
- 线性表(1)--顺序表模拟
- 小牛各个版本的限速破解方式-适用N1/M1/N1s----附加转向灯提示音修改
- RxJava&&RxAndroid学习地址备忘
- 在mac下用VLC对比两个视频质量
- fatal: The remote end hung up unexpectedly
- Qt之对象树与所有权