ExpandableListView实例(三)_实现QQ中"未分组"效果和"未分组"不可编辑删除功能

本例说明:

实现QQ中"未分组"效果和"未分组"不可编辑删除功能.

注:本文数据库处理使用框架AHibernate,可以灵活操作sqlite数据库,

详见: http://blog.csdn.net/lk_blog/article/details/7455992

本文只介绍主要部分,更多细节看上一篇博客:http://blog.csdn.net/lk_blog/article/details/7562987

效果图:

主要代码:

修改studentDaoImpl:

package com.tgb.lk.demo.dao.impl; import java.util.ArrayList; import java.util.List; import java.util.Map; import com.tgb.lk.ahibernate.dao.impl.BaseDaoImpl; import com.tgb.lk.demo.dao.StudentDao; import com.tgb.lk.demo.model.Student; import com.tgb.lk.demo.util.DBHelper; import com.tgb.lk.demo.util.GroupChild; import android.content.Context; //本文数据库处理引用jar包AHibernate处理. //AHibernate的详细使用教程示例地址: http://blog.csdn.net/lk_blog/article/details/7455992 //AHibernate源码交流地址: http://blog.csdn.net/lk_blog/article/details/7456125 //AHibernate jar包下载及源代码下载地址: http://download.csdn.net/detail/lk_blog/4222048 public class StudentDaoImpl extends BaseDaoImpl<Student> implements StudentDao { public StudentDaoImpl(Context context) { super(new DBHelper(context)); } //sql语句加入left,无论学生有没有班级属性都会查到结果中 public List<GroupChild> getData() { String sql = "select s._id sid,s.name sname,c._id cid,c.name cname from t_student s " + "left join t_classes c on s.classesid=c._id"; List<Map<String, String>> list = super.query2MapList(sql, null); List<GroupChild> retList = new ArrayList<GroupChild>(); //实现“未分组”功能。 GroupChild gc1 = new GroupChild(); gc1.setGroupId("0"); gc1.setGroupName("未分组"); retList.add(gc1); for (Map<String, String> map : list) { GroupChild gc = new GroupChild(); gc.setChildId(map.get("sid")); gc.setChildName(map.get("sname")); gc.setGroupId(map.get("cid") == null ? "0" : map.get("cid")); gc.setGroupName(map.get("cname") == null ? "未分组" : map .get("cname")); retList.add(gc); } return retList; } } 修改MainActivity.java:
(1)修改onCreate方法:

// 设置如果长按在"未分组"上时显示不可编辑并且不显示ContextMenu,优先响应OnItemLongClickListener后才会出来ContextMenu expList.setOnItemLongClickListener(itemLongClickListener);

(2)添加OnItemLongClickListener:

OnItemLongClickListener itemLongClickListener = new OnItemLongClickListener() { //在LongClickListener判断如果是第一个分组就取消ContextMenu注册. @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { if (position == 0) { toastShow("本组不可编辑和删除!"); unregisterForContextMenu(expList); } else { registerForContextMenu(expList); } return false; } };


ExpandableListView实例(一)_数据库增删改查处理和listitem点击长按处理
http://blog.csdn.net/lk_blog/article/details/7562987

ExpandableListView实例(二)_两种方式实现QQ中组后面显示子条目数量效果
http://blog.csdn.net/lk_blog/article/details/7563355

ExpandableListView实例(三)_实现QQ中"未分组"效果和"未分组"不可编辑删除功能
http://blog.csdn.net/lk_blog/article/details/7563371


源代码下载地址: http://download.csdn.net/detail/lk_blog/4299729


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值