Android Contact数据模型之EntityDelta(一)

转载 2012年03月31日 11:50:09
 EntityDelta的数据模型描述:
        EntityDelta是ValuesDelta的集合,它还实现了Parcelable接口。它包含了主数据(存在ValuesDelta mValues中)和子数据.它把子数据以ValuesDelta的形式按照它们的mimetype存放在HashMap<String, ArrayList<ValuesDelta>> mEntries中(拥有相同的mimetype的ValuesDelta放在同一个ArrayList).

       构造函数

       public EntityDelta()
       创建一个空的EntityDelta

       public EntityDelta(ValuesDelta values)
       创建一个EntityDelta,并用ValuesDelta values来初始化主数据。

       主要成员变量

        private ValuesDelta mValues;
        用于存放主表(主数据),

       private HashMap<String, ArrayList<ValuesDelta>> mEntries = Maps.newHashMap();
       用于存放子表(子数据),子数据以ValuesDelta的形式按照它们的mimetype存放在其中。


       静态成员变量
       public static final Parcelable.Creator<EntityDelta> CREATOR
       注
:该变量因Parcelable而设计。

       主要静态函数
       public static EntityDelta fromBefore(Entity before)
       用Entity before来实例化一个EntityDelta,把Entity before的getEntityValues()得到主数据以ValuesDelta.fromBefore的形式打包成ValuesDelta并赋予mValues.且设置mValues的mIdColumn为RawContacts._ID。然后用before.getSubValues()得到子数据,然后以ValuesDelta.fromBefore的形式打包成ValuesDelta并放入mEntries。

       注1:这里的Entity before对应一个RawContacts的数据。
       注2:该函数在把Entity转化成EntityDelta的过程中,把Entity的子数据的Uri uri丢失了。

       因为对于update操作可以通过ValuesDelta的id就可以确定它的位置(当然Uri uri也可以确定,毕竟Data.CONTENT_URI是固定)。

       对于删除操作,有主数据的信息就可以了。

       public static EntityDelta mergeAfter(EntityDelta local, EntityDelta remote)

       用EntityDelta remote对EntityDelta local进行mergeAfter操作。它主要是通过对EntityDelta local和EntityDelta remote中的ValuesDelta进行相应的ValuesDelta的mergeAfter操作来实现mergeAfter操作。对于主数据是直接对他们进行mergeAfter操作。对于子数据,是对同id(即ValuesDelta的mIdColumn值相同)的ValuesDelta进行mergeAfter操作。最后返回新的EntityDelta local。

        注1:EntityDelta local可以为null,这时会创建一个空的EntityDelta以便处理。
        注2:mergeAfter操作是针对EntityDelta local而进行,所以它会被改变。

        主要成员函数

        public ValuesDelta getValues()
        返回主数据mValues。

       public boolean isContactInsert()
       返回是否是Insert操作,通过调用主数据mValues的isInsert()方法来判断。

       public ValuesDelta getPrimaryEntry(String mimeType)
       返回PrimaryEntry

       得到MIME类型为mimeType的PrimaryEntry。找到MIME类型为mimeType的ValuesDelta且它的isPrimary()为true,就返回该ValuesDelta。

       如果没找到但MIME类型为mimeType的ValuesDelta的ArrayList<ValuesDelta>至少有一个,则返回该列表上的第一个ValuesDelta。否则返回null。

       public ValuesDelta getSuperPrimaryEntry(String mimeType)
       返回SuperPrimaryEntry

       它直接调用getSuperPrimaryEntry(mimeType, true)。

       public ValuesDelta getSuperPrimaryEntry(String mimeType, boolean forceSelection)
       返回SuperPrimaryEntry
举报

相关文章推荐

Android Contact数据模型之EntityDelta(二)

原理和getPrimaryEntry(String mimeType)相似。但是只有forceSelection为true的情况下,才在没有找到SuperPrimaryEntry的情况下返回Prima...

Contact数据模型之EntityDelta

public class EntityDelta implements Parcelable EntityDelta的数据模型描述: EntityDelta是ValuesDelta的集合,它还实现...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

使用Contact数据模型来批量插入联系人(上)

使用Contact数据模型来批量插入联系人主要需要contact数据模型的以下两文件: com.android.contacts.model下的: EntitySet.java En...

Contact数据模型之ValuesDelta

public static class ValuesDelta implements Parcelable  ValuesDelta位于com.android.contacts.model包的Ent...

使用Contact数据模型来批量插入联系人(下)

上文接《使用Contact数据模型来批量插入联系人(上)》 文件5 ContactPersistTask.java文件 package com.teleca.robin.Contac...

Contact数据模型之EntitySet(EntityDeltaList)

com.android.contacts.model.EntitySet在Android 4.0中已经改名为了com.android.contacts.model.EntityDeltaList. ...

Qt For Android 数据模型

Qt For Android 数据存储之数据模型

Android复杂数据模型序列化

android中自定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serializable。 关于Serializable感兴趣可以看Think InJava 或Effecti...
  • sylcc_
  • sylcc_
  • 2012-03-23 17:41
  • 6232

Android 短彩信数据模型介绍

存储路径: /data/data/com.android.providers.telephony/databases/mmssms.db 数据表 MMS模块总共包含17张表:...

Android:复杂数据模型的传递(了解下吧)

很久没有写了,一直不知道写什么,最近在研究怎样在Android的开发中传递一些复杂的数据。其实网上已经有很多的人都写过相关的,但是看了后,发现都大同小异,缺少我想要看到的地方。所以我打算做一下这方面的...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)