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


  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
ExpandableListView实例(一)_数据库增删改查处理和listitem点击长按处理 本例说明: 1.实例表现层与数据处理层分开,代码可复用性强,如果能看懂代码对算法会有提高. 2.组和子条目上"点击"事件处理,能够区分操作的是组还是子条目,并且得到组和子条目的内容. 3.组和子条目上"长按"事件处理,能够区分组和子条目,并且得到组和子条目的内容. 4.自定义条目样式,灵活与数据库字段绑定. 5.实现对DB的增删改查,并且操作后自动刷新. 6.使用数据库处理框架AHibernate灵活操作sqlite数据库,详见: http://blog.csdn.net/lk_blog/article/details/7455992 ExpandableListView实例(二)_两种方式实现QQ组后面显示子条目数量效果 本例说明: QQ,飞信等聊天工具组后面后会显示有多少个子条目,这个是如何实现的呢?查阅了网上还没有相关的介绍,现在本文介绍两种方式实现功能. 第一种方式:自定义Adapter,重写getGroupView方法. 第二种方式:自定义group.xml的控件,加一个textview用于显示子条目个数. 注:本文数据库处理使用框架AHibernate,可以灵活操作sqlite数据库, 详见: http://blog.csdn.net/lk_blog/article/details/7455992 ExpandableListView实例()_实现QQ"分组"效果和"分组"不可编辑删除功能 本例说明: 实现QQ"分组"效果和"分组"不可编辑删除功能. 注:本文数据库处理使用框架AHibernate,可以灵活操作sqlite数据库, 详见: http://blog.csdn.net/lk_blog/article/details/7455992

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值