class MediaHandler extends Handler {
public Map delstr;
@Override
public void handleMessage(Message message) {
switch (message.what) {
case 1:
try {
dataList = new ArrayList>();
fileString = message.obj.toString();
JSONObject object = JSONObject.fromObject(fileString);
JSONArray jArray = object.getJSONArray("userFiles");
for (int i = 0; i < jArray.size(); i++) {
Map<String, String> map = new HashMap<String, String>();
JSONObject jObject = jArray.getJSONObject(i);
map.put("fileName", jObject.get("fileName").toString());
map.put("zt", jObject.get("zt").toString());
map.put("name2", jObject.get("name2").toString());
dataList.add(map);
}
final MyAdapter adapter = new MyAdapter(
MediaFileActivity.this, dataList);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
// TODO 自动生成的方法存根
ViewHolder holder = (ViewHolder) arg1.getTag();
holder.mtvcb.toggle();// 在每次获取点击的item时改变checkbox的状态
MyAdapter.isselected.put(position,
holder.mtvcb.isChecked()); // 同时修改map的值保存状态
}
});
cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0,
boolean arg1) {
// TODO 自动生成的方法存根
try {
if (arg1) {
for (int i = 0; i < dataList.size(); i++) {
adapter.isselected.put(i, true);
}
Toast.makeText(MediaFileActivity.this,
"选中了" + adapter.isselected.size(),
2).show();
adapter.notifyDataSetChanged();// 注意这一句必须加上,否则checkbox无法正常更新状态
} else {
for (int i = 0; i < dataList.size(); i++) {
adapter.isselected.put(i, false);
}
adapter.notifyDataSetChanged();// 注意这一句必须加上,否则checkbox无法正常更新状态
}
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
});
btndelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
}
});
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
break;
case 2:
break;
}
}
}
这是我Handler的一段代码,现在点击事件也再里面导致每一次点击都执行一边handler里面的所有步骤,导致有点卡,尤其是cb(checkbox)的全选点击事件,会卡几秒钟,哪位大神帮忙给个思路!