额昨天讲课我都不知道我什么心态了,总之从结果来说就是,我学的个什么鸟东西!
0703:
自定义Content provider:
【玩敲:然后这一个MIME类型,他是有打开哪一个应用程序打开的类型,电话,点一个,拨号页面,就说如果你以
后想要把这一个。。业要为他定义相应的类型,在家其他的业差不多,增加关键在于先要cherub个控制,得到,然
后再把剩下的插进去;多媒体操作,他有从外部吃醋卡取得 ,业有从内部,图片,跟我们之前差不多,sd卡,取
得,图片名臣,面熟,图片数据,累名保存的是个路径,还哦大家注意下保存字符窜的时候要length-1,那么得到
路径以后再2用bItmap创建加载图片,之前做的应用,通过列表吧设备上的图片全部加载进来,内存溢出,是因为
图片太大了,几M的数据一次性加到内存中就,,ram,这个手机上边运行的内存是有限的,】
内存溢出报错,再BitMap=xxx之前加代码:
BitMaoFactory.Options opts=new BitMapFactory.Options();//若图片太大会导致内存溢出,使用opts对象来
对图片进行缩放
opts.inSampleSize=5;
Bitmap map = BitmapFactory.decodeFile(new String(bs, 0, bs.length - 1),opts);
手势的操作,对用户的手势操作作一个限制,
-------
自定义Content provider:涉及到一个uri的
原理,作为内容提供者,对数据相应的操作,获取数据ContentResauver内容解析者,
继承ContentProvider,
配置:有属性authorities,
工具类UriMatcher,为了确定该ContentProvider实际能匹配的Uri,以及确定没个够方法中的Uri参数所操作的数
据,
Void addURI(xx);
int match(xx);
工具类ContentUris,操作Uri字符串,两方法,
withAppendeId
【你麻痹做你妈卖批,包空指针又晓不得杂改,叫做新方法下手不了】
监听ContentProvider的数据改变,观察者模式,
下来吧学生管理加上这些,还有添加班级,两级表,有展开,则学生多个班级属性,修改班级是做个弹出框:组件
Spinner(有条目属性entries是数组,也是用adapter);删除可以不删除班级,但是有增加班级功能;2张表还
需有外键联系
烦现在学习状态好糟糕,昨天作业实现新学方法用手势切换图片我都没做,直到晚上为了图完成就是copy别人的,
然后炒好了啥子都没看就那样过去了,老师也不会评讲,真Tm挫,今天也是,绝对的若作业统计没几个差的话,第
二天就不讲了(他是那种头天讲一半,下来喊自己实现,第二天不咋讲的又继续新知识了);然后比如说现在,又
喊实现学生管理系统的ContentProvider来处理,今天是新讲这个知识,他上面演示,下来又不给时间我们好好熟
悉和完善,就叫我们自己开做了,这是教学吗?我就想草了,还不如人家视频上的方法明确,目的明确,条例明确
,自己下来也肯定就会了。。他这样讲都没跟我们讲懂就叫下来自己做,真操蛋。。。我有理由怀疑我这个钱又接
近水漂了,你妹纸的。整天学起这么累,学得还让人伤心,啷个可能学得下去,要学好,休息时间我可以说是绝对
没得的,学你吗的蛋,这不是逼人去耍么。。。
我还恼怒自己吧,看来真记东西理解没得别人轻松了,脑壳问题!
------------
下次课讲多媒体章节
打字骂骂脏话无所谓了,平时咱多乖的~
自定义ContentProvider
Uri uri = Uri.parse("content://com.lovo.providers.studentprovider/data/1");
long dataId = ContentUris.parseId(uri);
//获取的结果为1
public final class Student {
//定义该ContentProvider的Authority
public static final String AUTHORITY = "com.lovo.providers.studentprovider";
//定义一个静态内部类
public static class Data implements BaseColumns{
//定义Content所允许操作的数据列
public static final String NAME = "s_name";
public static final String AGE = "s_age";
//定义该Content提供服务的Uri
public static final Uri STUDENT_CONTENT_URI = Uri.parse("content://"+AUTHORITY+"/student");
}
}
//重写insert方法
public Uri insert(Uri uri, ContentValues contentvalues) {
//获得数据库实例
SQLiteDatabase db = studentDataHelper.getReadableDatabase();
//插入数据,返回行ID
long rowid = db.insert("t_stu", "s_name", contentvalues);
//如果插入成功则返回uri
if(rowid > 0){
//在已有的Uri的后面追加ID数据
Uri stuUri = ContentUris.withAppendedId(uri, rowid);
//通知数据已经改变
getContext().getContentResolver().notifyChange(stuUri, null);
return stuUri;
}
return null;
}
//重写query方法
public Cursor query(Uri uri, String[] as, String s, String[] as1, String s1) {
SQLiteDatabase db = studentDataHelper.getReadableDatabase();
//获取uri的标识码
int matchId = uriMatcher.match(uri);
Cursor cursor = null;
switch (matchId) {
case 1:
//根据uri中的id进行查询
long id = ContentUris.parseId(uri);
String where = "_id="+id;
//如果有条件则组装查询条件的字符串
if(s != null && !s.equals("")){
where = where + " and " + s;
}
cursor = db.query("t_stu", as, where, as1, null, null, s1);
break;
case 2:
//直接根据条件查询数据
cursor = db.query("t_stu", as, s, as1, null, null, s1);
break;
default:
throw new IllegalArgumentException("未知的Uri:"+uri);
}
return cursor;
}
监听 ContentProvider 的数据改变