FANGLH 8 years ago
parent
commit
f28601bf5e
50 changed files with 402 additions and 2676 deletions
  1. 269 272
      WeiChat/src/main/AndroidManifest.xml
  2. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/view/CardInfoActivity.java
  3. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/SaleChartActivity.java
  4. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/SaleDetailActivity.java
  5. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessActivity.java
  6. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessDetailInfoActivity.java
  7. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessLessActivity.java
  8. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/DataFormDetailActivity.java
  9. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/StickyListAdapter.java
  10. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/UUFriendFragment.java
  11. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/MessagePresenter.java
  12. 5 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/ChatActivity.java
  13. 0 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/InstantMessageActivity.java
  14. 0 147
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/DistinctMultiHashMap.java
  15. 0 39
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/DualHashMap.java
  16. 0 128
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/ExpandableStickyListHeadersListView.java
  17. 0 38
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/StickyListHeadersAdapter.java
  18. 0 1131
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/StickyListHeadersListView.java
  19. 0 156
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/WrapperView.java
  20. 0 197
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/WrapperViewList.java
  21. 1 1
      WeiChat/src/main/res/layout/act_sale_detail_list.xml
  22. 1 1
      WeiChat/src/main/res/layout/activity_business_detail_info.xml
  23. 1 1
      WeiChat/src/main/res/layout/activity_business_less.xml
  24. 1 1
      WeiChat/src/main/res/layout/activity_data_form_detail.xml
  25. 1 1
      WeiChat/src/main/res/layout/inculde_grid_view.xml
  26. 0 226
      app_core/common/src/main/java/com/core/widget/stickylistheaders/AdapterWrapper.java
  27. 0 32
      app_core/common/src/main/java/com/core/widget/stickylistheaders/CheckableWrapperView.java
  28. 0 131
      app_core/common/src/main/java/com/core/widget/stickylistheaders/ExpandableStickyListHeadersAdapter.java
  29. 0 32
      app_core/common/src/main/java/com/core/widget/stickylistheaders/SectionIndexerAdapterWrapper.java
  30. 3 3
      app_core/common/src/main/java/com/core/xmpp/widget/ChatContentView.java
  31. 1 1
      app_core/common/src/main/res/layout/activity_business_detail_info.xml
  32. 1 1
      app_core/common/src/main/res/layout/fragment_contact.xml
  33. 28 4
      app_modular/appcontact/src/main/AndroidManifest.xml
  34. 21 12
      app_modular/appcontact/src/main/java/com/me/appcontact/manager/ContactsManager.java
  35. 2 2
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/CompanyContactsActivity.java
  36. 2 2
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/MyFriendActivity.java
  37. 39 83
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/fragment/ContactFragment.java
  38. 4 4
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/AdapterWrapper.java
  39. 1 2
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/CheckableWrapperView.java
  40. 1 1
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/DistinctMultiHashMap.java
  41. 1 1
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/DualHashMap.java
  42. 1 2
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/ExpandableStickyListHeadersAdapter.java
  43. 1 1
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/ExpandableStickyListHeadersListView.java
  44. 1 1
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/ListViewInScroller.java
  45. 1 1
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/SectionIndexerAdapterWrapper.java
  46. 1 1
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/StickyListHeadersAdapter.java
  47. 1 1
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/StickyListHeadersListView.java
  48. 1 1
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/WrapperView.java
  49. 1 1
      app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/WrapperViewList.java
  50. 1 1
      app_modular/appme/src/main/java/com/me/appme/other/activity/BasicInfoActivity.java

File diff suppressed because it is too large
+ 269 - 272
WeiChat/src/main/AndroidManifest.xml


+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/view/CardInfoActivity.java

@@ -59,7 +59,7 @@ import com.core.utils.helper.AvatarHelper;
 import com.core.xmpp.FriendHelper;
 import com.core.base.BaseActivity;
 import com.core.net.http.ViewUtil;
-import com.uas.appcontact.ui.activity.ChatActivity;
+import com.xzjmyk.pm.activity.ui.message.ChatActivity;
 import com.xzjmyk.pm.activity.ui.platform.task.TaskAddErpActivity;
 import com.core.utils.ToastUtil;
 import com.core.widget.DataLoadView;

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/SaleChartActivity.java

@@ -48,7 +48,7 @@ import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 import com.core.utils.FlexJsonUtil;
 import com.common.data.ObjectUtils;
 import com.xzjmyk.pm.activity.ui.erp.view.CustomProgressDialog;
-import com.core.widget.stickylistheaders.ListViewInScroller;
+import com.uas.appcontact.ui.widget.stickylistheaders.ListViewInScroller;
 import com.xzjmyk.pm.activity.ui.erp.view.MonPickerDialog;
 import com.xzjmyk.pm.activity.ui.erp.view.MyMarkerView;
 

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/SaleDetailActivity.java

@@ -30,7 +30,7 @@ import com.xzjmyk.pm.activity.ui.erp.model.LogsEntity;
 import com.xzjmyk.pm.activity.ui.erp.model.PanelItems;
 import com.core.net.http.ViewUtil;
 import com.core.widget.EmptyLayout;
-import com.core.widget.stickylistheaders.ListViewInScroller;
+import com.uas.appcontact.ui.widget.stickylistheaders.ListViewInScroller;
 import com.xzjmyk.pm.activity.ui.erp.view.PickDialog;
 import com.core.utils.FlexJsonUtil;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessActivity.java

@@ -37,7 +37,7 @@ import com.core.net.http.ViewUtil;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 import com.core.app.Constants;
 import com.core.model.OAConfig;
-import com.core.widget.stickylistheaders.ListViewInScroller;
+import com.uas.appcontact.ui.widget.stickylistheaders.ListViewInScroller;
 import com.xzjmyk.pm.activity.view.FunnelView;
 
 import java.text.SimpleDateFormat;

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessDetailInfoActivity.java

@@ -62,7 +62,7 @@ import com.xzjmyk.pm.activity.view.MyListView;
 import com.xzjmyk.pm.activity.view.crouton.Crouton;
 import com.xzjmyk.pm.activity.view.crouton.Style;
 import com.xzjmyk.pm.activity.view.steps.StepsView;
-import com.xzjmyk.pm.activity.view.stickylistheaders.StickyListHeadersListView;
+import com.uas.appcontact.ui.widget.stickylistheaders.StickyListHeadersListView;
 
 import java.util.ArrayList;
 import java.util.HashMap;

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessLessActivity.java

@@ -31,7 +31,7 @@ import com.core.net.http.ViewUtil;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 import com.core.app.Constants;
 import com.core.utils.CommonInterface;
-import com.core.widget.stickylistheaders.ListViewInScroller;
+import com.uas.appcontact.ui.widget.stickylistheaders.ListViewInScroller;
 import com.xzjmyk.pm.activity.ui.erp.view.SingleDialog;
 import com.xzjmyk.pm.activity.view.crouton.Crouton;
 import com.xzjmyk.pm.activity.view.crouton.Style;

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/DataFormDetailActivity.java

@@ -53,7 +53,7 @@ import com.core.app.Constants;
 import com.common.data.ListUtils;
 import com.xzjmyk.pm.activity.util.oa.PopupWindowHelper;
 import com.common.data.RegexUtil;
-import com.core.widget.stickylistheaders.ListViewInScroller;
+import com.uas.appcontact.ui.widget.stickylistheaders.ListViewInScroller;
 import com.xzjmyk.pm.activity.view.wheel.DateTimePicker;
 
 import java.text.DecimalFormat;

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/StickyListAdapter.java

@@ -7,9 +7,9 @@ import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 import android.widget.TextView;
 
+import com.uas.appcontact.ui.widget.stickylistheaders.StickyListHeadersAdapter;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.model.list.SimpleData;
-import com.xzjmyk.pm.activity.view.stickylistheaders.StickyListHeadersAdapter;
 
 import java.util.List;
 

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/UUFriendFragment.java

@@ -39,7 +39,7 @@ import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
 import com.me.appme.other.activity.BasicInfoActivity;
 import com.uas.appcontact.adapter.FriendSortAdapter;
-import com.uas.appcontact.ui.activity.ChatActivity;
+import com.xzjmyk.pm.activity.ui.message.ChatActivity;
 import com.uas.appcontact.ui.activity.NewFriendActivity;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.EasyFragment;

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/MessagePresenter.java

@@ -35,7 +35,6 @@ import com.core.utils.sortlist.PingYinUtil;
 import com.core.xmpp.dao.ChatMessageDao;
 import com.core.xmpp.dao.FriendDao;
 import com.core.xmpp.utils.AppConstant;
-import com.uas.appcontact.ui.activity.ChatActivity;
 import com.uas.appcontact.ui.activity.NewFriendActivity;
 import com.xzjmyk.pm.activity.bean.message.SubMessage;
 import com.xzjmyk.pm.activity.bean.message.SubscriptionMessage;
@@ -48,6 +47,7 @@ import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IMessageView;
 import com.xzjmyk.pm.activity.ui.message.MucChatActivity;
 import com.xzjmyk.pm.activity.util.im.UserRoleUtils;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
+import com.xzjmyk.pm.activity.ui.message.ChatActivity;
 
 import java.util.ArrayList;
 import java.util.Collections;

+ 5 - 5
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/ChatActivity.java → WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/ChatActivity.java

@@ -1,4 +1,4 @@
-package com.uas.appcontact.ui.activity;
+package com.xzjmyk.pm.activity.ui.message;
 
 import android.app.Activity;
 import android.content.ActivityNotFoundException;
@@ -106,7 +106,7 @@ public class ChatActivity extends ActionBackActivity
         public void handleMessage(Message msg) {
             switch (msg.what) {
                 case 5:
-                   // Log.i("push", msg.getData().getString("result"));
+                    // Log.i("push", msg.getData().getString("result"));
                     break;
             }
         }
@@ -476,7 +476,7 @@ public class ChatActivity extends ActionBackActivity
      */
     public boolean interprect(ChatMessage message) {
         int len = 0;
-        if (mBlackList!=null) {
+        if (mBlackList != null) {
             for (Friend friend : mBlackList) {
                 if (friend.getUserId().equals(mFriend.getUserId())) {
                     Toast.makeText(mContext, "已经加入黑名单,无法发送消息", Toast.LENGTH_SHORT).show();
@@ -710,14 +710,14 @@ public class ChatActivity extends ActionBackActivity
     @Override
     public void clickCamera() {
         Log.d("roamer", "clickCamera");
-        mNewPhotoUri = CameraUtil.getOutputMediaFileUri(this, MyApplication.getInstance().mLoginUser.getUserId(),CameraUtil.MEDIA_TYPE_IMAGE);
+        mNewPhotoUri = CameraUtil.getOutputMediaFileUri(this, MyApplication.getInstance().mLoginUser.getUserId(), CameraUtil.MEDIA_TYPE_IMAGE);
         CameraUtil.captureImage(this, mNewPhotoUri, REQUEST_CODE_CAPTURE_PHOTO);
         mChatBottomView.reset();
     }
 
     @Override
     public void clickVideo() {
-        Intent intent = new Intent("com.modular.im.LocalVideoActivity" );
+        Intent intent = new Intent("com.modular.im.LocalVideoActivity");
         intent.putExtra(AppConstant.EXTRA_ACTION, AppConstant.ACTION_SELECT);
         startActivityForResult(intent, REQUEST_CODE_SELECT_VIDE0);
     }

+ 0 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/InstantMessageActivity.java

@@ -16,7 +16,6 @@ import android.widget.TextView;
 
 import com.core.xmpp.utils.AppConstant;
 import com.core.app.MyApplication;
-import com.uas.appcontact.ui.activity.ChatActivity;
 import com.xzjmyk.pm.activity.R;
 import com.core.model.Friend;
 import com.core.xmpp.model.ChatMessage;

+ 0 - 147
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/DistinctMultiHashMap.java

@@ -1,147 +0,0 @@
-package com.xzjmyk.pm.activity.view.stickylistheaders;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * a hash map can maintain an one-to-many relationship which the value only belongs to one “one” part
- * and the map also support getKey by value quickly
- *
- * @author lsjwzh
- */
-class DistinctMultiHashMap<TKey,TItemValue> {
-    private IDMapper<TKey, TItemValue> mIDMapper;
-
-    interface IDMapper<TKey,TItemValue>{
-        public Object keyToKeyId(TKey key);
-        public TKey keyIdToKey(Object keyId);
-        public Object valueToValueId(TItemValue value);
-        public TItemValue valueIdToValue(Object valueId);
-    }
-
-    LinkedHashMap<Object,List<TItemValue>> mKeyToValuesMap = new LinkedHashMap<Object, List<TItemValue>>();
-    LinkedHashMap<Object,TKey> mValueToKeyIndexer = new LinkedHashMap<Object, TKey>();
-
-    DistinctMultiHashMap(){
-         this(new IDMapper<TKey, TItemValue>() {
-             @Override
-             public Object keyToKeyId(TKey key) {
-                 return key;
-             }
-
-             @Override
-             public TKey keyIdToKey(Object keyId) {
-                 return (TKey) keyId;
-             }
-
-             @Override
-             public Object valueToValueId(TItemValue value) {
-                 return value;
-             }
-
-             @Override
-             public TItemValue valueIdToValue(Object valueId) {
-                 return (TItemValue) valueId;
-             }
-         });
-    }
-    DistinctMultiHashMap(IDMapper<TKey, TItemValue> idMapper){
-        mIDMapper = idMapper;
-    }
-
-    public List<TItemValue> get(TKey key){
-        //todo immutable
-        return mKeyToValuesMap.get(mIDMapper.keyToKeyId(key));
-    }
-    public TKey getKey(TItemValue value){
-        return mValueToKeyIndexer.get(mIDMapper.valueToValueId(value));
-    }
-
-    public void add(TKey key,TItemValue value){
-        Object keyId = mIDMapper.keyToKeyId(key);
-        if(mKeyToValuesMap.get(keyId)==null){
-            mKeyToValuesMap.put(keyId,new ArrayList<TItemValue>());
-        }
-        //remove old relationship
-        TKey keyForValue = getKey(value);
-        if(keyForValue !=null){
-            mKeyToValuesMap.get(mIDMapper.keyToKeyId(keyForValue)).remove(value);
-        }
-        mValueToKeyIndexer.put(mIDMapper.valueToValueId(value), key);
-        if(!containsValue(mKeyToValuesMap.get(mIDMapper.keyToKeyId(key)),value)) {
-            mKeyToValuesMap.get(mIDMapper.keyToKeyId(key)).add(value);
-        }
-    }
-
-    public void removeKey(TKey key){
-        if(mKeyToValuesMap.get(mIDMapper.keyToKeyId(key))!=null){
-            for (TItemValue value : mKeyToValuesMap.get(mIDMapper.keyToKeyId(key))){
-                mValueToKeyIndexer.remove(mIDMapper.valueToValueId(value));
-            }
-            mKeyToValuesMap.remove(mIDMapper.keyToKeyId(key));
-        }
-    }
-    public void removeValue(TItemValue value){
-        if(getKey(value)!=null){
-            List<TItemValue> itemValues = mKeyToValuesMap.get(mIDMapper.keyToKeyId(getKey(value)));
-            if(itemValues!=null){
-                itemValues.remove(value);
-            }
-        }
-        mValueToKeyIndexer.remove(mIDMapper.valueToValueId(value));
-    }
-
-    public void clear(){
-        mValueToKeyIndexer.clear();
-        mKeyToValuesMap.clear();
-    }
-
-    public void clearValues(){
-        for (Map.Entry<Object,List<TItemValue>> entry:entrySet()){
-            if(entry.getValue()!=null){
-                entry.getValue().clear();
-            }
-        }
-        mValueToKeyIndexer.clear();
-    }
-
-    public Set<Map.Entry<Object,List<TItemValue>>> entrySet(){
-        return mKeyToValuesMap.entrySet();
-    }
-
-    public Set<Map.Entry<Object,TKey>> reverseEntrySet(){
-        return mValueToKeyIndexer.entrySet();
-    }
-
-    public int size(){
-        return mKeyToValuesMap.size();
-    }
-    public int valuesSize(){
-        return mValueToKeyIndexer.size();
-    }
-
-    protected boolean containsValue(List<TItemValue> list,TItemValue  value){
-        for (TItemValue itemValue :list){
-            if(mIDMapper.valueToValueId(itemValue).equals(mIDMapper.valueToValueId(value))){
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * @param position
-     * @return
-     */
-    public TItemValue getValueByPosition(int position){
-        Object[] vauleIdArray = mValueToKeyIndexer.keySet().toArray();
-        if(position>vauleIdArray.length){
-            throw new IndexOutOfBoundsException();
-        }
-        Object valueId = vauleIdArray[position];
-        return mIDMapper.valueIdToValue(valueId);
-    }
-}

+ 0 - 39
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/DualHashMap.java

@@ -1,39 +0,0 @@
-package com.xzjmyk.pm.activity.view.stickylistheaders;
-
-import java.util.HashMap;
-
-/**
- * simple two way hashmap
- * @author lsjwzh
- */
-class DualHashMap<TKey, TValue> {
-    HashMap<TKey, TValue> mKeyToValue = new HashMap<TKey, TValue>();
-    HashMap<TValue, TKey> mValueToKey = new HashMap<TValue, TKey>();
-
-    public void put(TKey t1, TValue t2){
-        remove(t1);
-        removeByValue(t2);
-        mKeyToValue.put(t1, t2);
-        mValueToKey.put(t2, t1);
-    }
-
-    public TKey getKey(TValue value){
-        return mValueToKey.get(value);
-    }
-    public TValue get(TKey key){
-        return mKeyToValue.get(key);
-    }
-
-    public void remove(TKey key){
-        if(get(key)!=null){
-            mValueToKey.remove(get(key));
-        }
-        mKeyToValue.remove(key);
-    }
-    public void removeByValue(TValue value){
-        if(getKey(value)!=null){
-            mKeyToValue.remove(getKey(value));
-        }
-        mValueToKey.remove(value);
-    }
-}

+ 0 - 128
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/ExpandableStickyListHeadersListView.java

@@ -1,128 +0,0 @@
-package com.xzjmyk.pm.activity.view.stickylistheaders;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-
-import java.util.List;
-
-
-
-/**
- * add expand/collapse functions like ExpandableListView
- * @author lsjwzh
- */
-public class ExpandableStickyListHeadersListView extends StickyListHeadersListView {
-    public interface IAnimationExecutor{
-        public void executeAnim(View target, int animType);
-    }
-
-    public final static int ANIMATION_COLLAPSE = 1;
-    public final static int ANIMATION_EXPAND = 0;
-
-    ExpandableStickyListHeadersAdapter mExpandableStickyListHeadersAdapter;
-
-
-
-    IAnimationExecutor mDefaultAnimExecutor = new IAnimationExecutor() {
-        @Override
-        public void executeAnim(View target, int animType) {
-            if(animType==ANIMATION_EXPAND){
-                target.setVisibility(VISIBLE);
-            }else if(animType==ANIMATION_COLLAPSE){
-                target.setVisibility(GONE);
-            }
-        }
-    };
-
-
-    public ExpandableStickyListHeadersListView(Context context) {
-        super(context);
-    }
-
-    public ExpandableStickyListHeadersListView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public ExpandableStickyListHeadersListView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-    }
-
-    @Override
-    public ExpandableStickyListHeadersAdapter getAdapter() {
-        return mExpandableStickyListHeadersAdapter;
-    }
-
-    @Override
-    public void setAdapter(StickyListHeadersAdapter adapter) {
-        mExpandableStickyListHeadersAdapter = new ExpandableStickyListHeadersAdapter(adapter);
-        super.setAdapter(mExpandableStickyListHeadersAdapter);
-    }
-
-    public View findViewByItemId(long itemId){
-        return mExpandableStickyListHeadersAdapter.findViewByItemId(itemId);
-    }
-
-    public long findItemIdByView(View view){
-        return mExpandableStickyListHeadersAdapter.findItemIdByView(view);
-    }
-
-    public void expand(long headerId) {
-        if(!mExpandableStickyListHeadersAdapter.isHeaderCollapsed(headerId)){
-            return;
-        }
-        mExpandableStickyListHeadersAdapter.expand(headerId);
-        //find and expand views in group
-        List<View> itemViews = mExpandableStickyListHeadersAdapter.getItemViewsByHeaderId(headerId);
-        if(itemViews==null){
-            return;
-        }
-        for (View view : itemViews) {
-            animateView(view, ANIMATION_EXPAND);
-        }
-    }
-
-    public void collapse(long headerId) {
-        if(mExpandableStickyListHeadersAdapter.isHeaderCollapsed(headerId)){
-            return;
-        }
-        mExpandableStickyListHeadersAdapter.collapse(headerId);
-        //find and hide views with the same header
-        List<View> itemViews = mExpandableStickyListHeadersAdapter.getItemViewsByHeaderId(headerId);
-        if(itemViews==null){
-            return;
-        }
-        for (View view : itemViews) {
-            animateView(view, ANIMATION_COLLAPSE);
-        }
-    }
-
-    public boolean isHeaderCollapsed(long headerId){
-        return  mExpandableStickyListHeadersAdapter.isHeaderCollapsed(headerId);
-    }
-
-    public void setAnimExecutor(IAnimationExecutor animExecutor) {
-        this.mDefaultAnimExecutor = animExecutor;
-    }
-
-    /**
-     * Performs either COLLAPSE or EXPAND animation on the target view
-     *
-     * @param target the view to animate
-     * @param type   the animation type, either ExpandCollapseAnimation.COLLAPSE
-     *               or ExpandCollapseAnimation.EXPAND
-     */
-    private void animateView(final View target, final int type) {
-        if(ANIMATION_EXPAND==type&&target.getVisibility()==VISIBLE){
-            return;
-        }
-        if(ANIMATION_COLLAPSE==type&&target.getVisibility()!=VISIBLE){
-            return;
-        }
-        if(mDefaultAnimExecutor !=null){
-            mDefaultAnimExecutor.executeAnim(target,type);
-        }
-
-    }
-
-}

+ 0 - 38
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/StickyListHeadersAdapter.java

@@ -1,38 +0,0 @@
-package com.xzjmyk.pm.activity.view.stickylistheaders;
-
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ListAdapter;
-
-public interface StickyListHeadersAdapter extends ListAdapter {
-	/**
-	 * Get a View that displays the header data at the specified position in the
-	 * set. You can either create a View manually or inflate it from an XML layout
-	 * file.
-	 *
-	 * @param position
-	 * The position of the item within the adapter's data set of the item whose
-	 * header view we want.
-	 * @param convertView
-	 * The old view to reuse, if possible. Note: You should check that this view is
-	 * non-null and of an appropriate type before using. If it is not possible to
-	 * convert this view to display the correct data, this method can create a new
-	 * view.
-	 * @param parent
-	 * The parent that this view will eventually be attached to.
-	 * @return
-	 * A View corresponding to the data at the specified position.
-	 */
-	View getHeaderView(int position, View convertView, ViewGroup parent);
-
-	/**
-	 * Get the header id associated with the specified position in the list.
-	 *
-	 * @param position
-	 * The position of the item within the adapter's data set whose header id we
-	 * want.
-	 * @return
-	 * The id of the header at the specified position.
-	 */
-	long getHeaderId(int position);
-}

+ 0 - 1131
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/StickyListHeadersListView.java

@@ -1,1131 +0,0 @@
-package com.xzjmyk.pm.activity.view.stickylistheaders;
-
-import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.database.DataSetObserver;
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import android.os.Build;
-import android.os.Parcelable;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.util.SparseBooleanArray;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.widget.AbsListView;
-import android.widget.AbsListView.MultiChoiceModeListener;
-import android.widget.AbsListView.OnScrollListener;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.AdapterView.OnItemLongClickListener;
-import android.widget.FrameLayout;
-import android.widget.ListView;
-import android.widget.SectionIndexer;
-
-import com.xzjmyk.pm.activity.R;
-
-
-/**
- * Even though this is a FrameLayout subclass we still consider it a ListView.
- * This is because of 2 reasons:
- *   1. It acts like as ListView.
- *   2. It used to be a ListView subclass and refactoring the name would cause compatibility errors.
- *
- * @author Emil Sjölander
- */
-public class StickyListHeadersListView extends FrameLayout {
-
-    public interface OnHeaderClickListener {
-        void onHeaderClick(StickyListHeadersListView l, View header,
-                           int itemPosition, long headerId, boolean currentlySticky);
-    }
-
-    /**
-     * Notifies the listener when the sticky headers top offset has changed.
-     */
-    public interface OnStickyHeaderOffsetChangedListener {
-        /**
-         * @param l      The view parent
-         * @param header The currently sticky header being offset.
-         *               This header is not guaranteed to have it's measurements set.
-         *               It is however guaranteed that this view has been measured,
-         *               therefor you should user getMeasured* methods instead of
-         *               get* methods for determining the view's size.
-         * @param offset The amount the sticky header is offset by towards to top of the screen.
-         */
-        void onStickyHeaderOffsetChanged(StickyListHeadersListView l, View header, int offset);
-    }
-
-    /**
-     * Notifies the listener when the sticky header has been updated
-     */
-    public interface OnStickyHeaderChangedListener {
-        /**
-         * @param l             The view parent
-         * @param header        The new sticky header view.
-         * @param itemPosition  The position of the item within the adapter's data set of
-         *                      the item whose header is now sticky.
-         * @param headerId      The id of the new sticky header.
-         */
-        void onStickyHeaderChanged(StickyListHeadersListView l, View header,
-                                   int itemPosition, long headerId);
-
-    }
-
-    /* --- Children --- */
-    private WrapperViewList mList;
-    private View mHeader;
-
-    /* --- Header state --- */
-    private Long mHeaderId;
-    // used to not have to call getHeaderId() all the time
-    private Integer mHeaderPosition;
-    private Integer mHeaderOffset;
-
-    /* --- Delegates --- */
-    private OnScrollListener mOnScrollListenerDelegate;
-    private AdapterWrapper mAdapter;
-
-    /* --- Settings --- */
-    private boolean mAreHeadersSticky = true;
-    private boolean mClippingToPadding = true;
-    private boolean mIsDrawingListUnderStickyHeader = true;
-    private int mStickyHeaderTopOffset = 0;
-    private int mPaddingLeft = 0;
-    private int mPaddingTop = 0;
-    private int mPaddingRight = 0;
-    private int mPaddingBottom = 0;
-
-    /* --- Touch handling --- */
-    private float mDownY;
-    private boolean mHeaderOwnsTouch;
-    private float mTouchSlop;
-
-    /* --- Other --- */
-    private OnHeaderClickListener mOnHeaderClickListener;
-    private OnStickyHeaderOffsetChangedListener mOnStickyHeaderOffsetChangedListener;
-    private OnStickyHeaderChangedListener mOnStickyHeaderChangedListener;
-    private AdapterWrapperDataSetObserver mDataSetObserver;
-    private Drawable mDivider;
-    private int mDividerHeight;
-
-    public StickyListHeadersListView(Context context) {
-        this(context, null);
-    }
-
-    public StickyListHeadersListView(Context context, AttributeSet attrs) {
-        this(context, attrs, R.attr.stickyListHeadersListViewStyle);
-    }
-
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public StickyListHeadersListView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-
-        mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();
-
-        // Initialize the wrapped list
-        mList = new WrapperViewList(context);
-
-        // null out divider, dividers are handled by adapter so they look good with headers
-        mDivider = mList.getDivider();
-        mDividerHeight = mList.getDividerHeight();
-        mList.setDivider(null);
-        mList.setDividerHeight(0);
-
-        if (attrs != null) {
-            TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.StickyListHeadersListView, defStyle, 0);
-
-            try {
-                // -- View attributes --
-                int padding = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_padding, 0);
-                mPaddingLeft = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingLeft, padding);
-                mPaddingTop = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingTop, padding);
-                mPaddingRight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingRight, padding);
-                mPaddingBottom = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingBottom, padding);
-
-                setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom);
-
-                // Set clip to padding on the list and reset value to default on
-                // wrapper
-                mClippingToPadding = a.getBoolean(R.styleable.StickyListHeadersListView_android_clipToPadding, true);
-                super.setClipToPadding(true);
-                mList.setClipToPadding(mClippingToPadding);
-
-                // scrollbars
-                final int scrollBars = a.getInt(R.styleable.StickyListHeadersListView_android_scrollbars, 0x00000200);
-                mList.setVerticalScrollBarEnabled((scrollBars & 0x00000200) != 0);
-                mList.setHorizontalScrollBarEnabled((scrollBars & 0x00000100) != 0);
-
-                // overscroll
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
-                    mList.setOverScrollMode(a.getInt(R.styleable.StickyListHeadersListView_android_overScrollMode, 0));
-                }
-
-                // -- ListView attributes --
-                mList.setFadingEdgeLength(a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_fadingEdgeLength,
-                        mList.getVerticalFadingEdgeLength()));
-                final int fadingEdge = a.getInt(R.styleable.StickyListHeadersListView_android_requiresFadingEdge, 0);
-                if (fadingEdge == 0x00001000) {
-                    mList.setVerticalFadingEdgeEnabled(false);
-                    mList.setHorizontalFadingEdgeEnabled(true);
-                } else if (fadingEdge == 0x00002000) {
-                    mList.setVerticalFadingEdgeEnabled(true);
-                    mList.setHorizontalFadingEdgeEnabled(false);
-                } else {
-                    mList.setVerticalFadingEdgeEnabled(false);
-                    mList.setHorizontalFadingEdgeEnabled(false);
-                }
-                mList.setCacheColorHint(a
-                        .getColor(R.styleable.StickyListHeadersListView_android_cacheColorHint, mList.getCacheColorHint()));
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
-                    mList.setChoiceMode(a.getInt(R.styleable.StickyListHeadersListView_android_choiceMode,
-                            mList.getChoiceMode()));
-                }
-                mList.setDrawSelectorOnTop(a.getBoolean(R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, false));
-                mList.setFastScrollEnabled(a.getBoolean(R.styleable.StickyListHeadersListView_android_fastScrollEnabled,
-                        mList.isFastScrollEnabled()));
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
-                    mList.setFastScrollAlwaysVisible(a.getBoolean(
-                            R.styleable.StickyListHeadersListView_android_fastScrollAlwaysVisible,
-                            mList.isFastScrollAlwaysVisible()));
-                }
-
-                mList.setScrollBarStyle(a.getInt(R.styleable.StickyListHeadersListView_android_scrollbarStyle, 0));
-
-                if (a.hasValue(R.styleable.StickyListHeadersListView_android_listSelector)) {
-                    mList.setSelector(a.getDrawable(R.styleable.StickyListHeadersListView_android_listSelector));
-                }
-
-                mList.setScrollingCacheEnabled(a.getBoolean(R.styleable.StickyListHeadersListView_android_scrollingCache,
-                        mList.isScrollingCacheEnabled()));
-
-                if (a.hasValue(R.styleable.StickyListHeadersListView_android_divider)) {
-                    mDivider = a.getDrawable(R.styleable.StickyListHeadersListView_android_divider);
-                }
-                
-                mList.setStackFromBottom(a.getBoolean(R.styleable.StickyListHeadersListView_android_stackFromBottom, false));
-
-                mDividerHeight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_dividerHeight,
-                        mDividerHeight);
-
-                mList.setTranscriptMode(a.getInt(R.styleable.StickyListHeadersListView_android_transcriptMode,
-                        ListView.TRANSCRIPT_MODE_DISABLED));
-
-                // -- StickyListHeaders attributes --
-                mAreHeadersSticky = a.getBoolean(R.styleable.StickyListHeadersListView_hasStickyHeaders, true);
-                mIsDrawingListUnderStickyHeader = a.getBoolean(
-                        R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader,
-                        true);
-            } finally {
-                a.recycle();
-            }
-        }
-
-        // attach some listeners to the wrapped list
-        mList.setLifeCycleListener(new WrapperViewListLifeCycleListener());
-        mList.setOnScrollListener(new WrapperListScrollListener());
-
-        addView(mList);
-    }
-
-    @Override
-    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-        measureHeader(mHeader);
-    }
-
-    private void ensureHeaderHasCorrectLayoutParams(View header) {
-        ViewGroup.LayoutParams lp = header.getLayoutParams();
-        if (lp == null) {
-            lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
-            header.setLayoutParams(lp);
-        } else if (lp.height == LayoutParams.MATCH_PARENT || lp.width == LayoutParams.WRAP_CONTENT) {
-            lp.height = LayoutParams.WRAP_CONTENT;
-            lp.width = LayoutParams.MATCH_PARENT;
-            header.setLayoutParams(lp);
-        }
-    }
-
-    private void measureHeader(View header) {
-        if (header != null) {
-            final int width = getMeasuredWidth() - mPaddingLeft - mPaddingRight;
-            final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(
-                    width, MeasureSpec.EXACTLY);
-            final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0,
-                    MeasureSpec.UNSPECIFIED);
-            measureChild(header, parentWidthMeasureSpec,
-                    parentHeightMeasureSpec);
-        }
-    }
-
-    @Override
-    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
-        mList.layout(0, 0, mList.getMeasuredWidth(), getHeight());
-        if (mHeader != null) {
-            MarginLayoutParams lp = (MarginLayoutParams) mHeader.getLayoutParams();
-            int headerTop = lp.topMargin;
-            mHeader.layout(mPaddingLeft, headerTop, mHeader.getMeasuredWidth()
-                    + mPaddingLeft, headerTop + mHeader.getMeasuredHeight());
-        }
-    }
-
-    @Override
-    protected void dispatchDraw(Canvas canvas) {
-        // Only draw the list here.
-        // The header should be drawn right after the lists children are drawn.
-        // This is done so that the header is above the list items
-        // but below the list decorators (scroll bars etc).
-        if (mList.getVisibility() == VISIBLE || mList.getAnimation() != null) {
-            drawChild(canvas, mList, 0);
-        }
-    }
-
-    // Reset values tied the header. also remove header form layout
-    // This is called in response to the data set or the adapter changing
-    private void clearHeader() {
-        if (mHeader != null) {
-            removeView(mHeader);
-            mHeader = null;
-            mHeaderId = null;
-            mHeaderPosition = null;
-            mHeaderOffset = null;
-
-            // reset the top clipping length
-            mList.setTopClippingLength(0);
-            updateHeaderVisibilities();
-        }
-    }
-
-    private void updateOrClearHeader(int firstVisiblePosition) {
-        final int adapterCount = mAdapter == null ? 0 : mAdapter.getCount();
-        if (adapterCount == 0 || !mAreHeadersSticky) {
-            return;
-        }
-
-        final int headerViewCount = mList.getHeaderViewsCount();
-        int headerPosition = firstVisiblePosition - headerViewCount;
-        if (mList.getChildCount() > 0) {
-            View firstItem = mList.getChildAt(0);
-            if (firstItem.getBottom() < stickyHeaderTop()) {
-                headerPosition++;
-            }
-        }
-
-        // It is not a mistake to call getFirstVisiblePosition() here.
-        // Most of the time getFixedFirstVisibleItem() should be called
-        // but that does not work great together with getChildAt()
-        final boolean doesListHaveChildren = mList.getChildCount() != 0;
-        final boolean isFirstViewBelowTop = doesListHaveChildren
-                && mList.getFirstVisiblePosition() == 0
-                && mList.getChildAt(0).getTop() >= stickyHeaderTop();
-        final boolean isHeaderPositionOutsideAdapterRange = headerPosition > adapterCount - 1
-                || headerPosition < 0;
-        if (!doesListHaveChildren || isHeaderPositionOutsideAdapterRange || isFirstViewBelowTop) {
-            clearHeader();
-            return;
-        }
-
-        updateHeader(headerPosition);
-    }
-
-    private void updateHeader(int headerPosition) {
-
-        // check if there is a new header should be sticky
-        if (mHeaderPosition == null || mHeaderPosition != headerPosition) {
-            mHeaderPosition = headerPosition;
-            final long headerId = mAdapter.getHeaderId(headerPosition);
-            if (mHeaderId == null || mHeaderId != headerId) {
-                mHeaderId = headerId;
-                final View header = mAdapter.getHeaderView(mHeaderPosition, mHeader, this);
-                if (mHeader != header) {
-                    if (header == null) {
-                        throw new NullPointerException("header may not be null");
-                    }
-                    swapHeader(header);
-                }
-                ensureHeaderHasCorrectLayoutParams(mHeader);
-                measureHeader(mHeader);
-                if(mOnStickyHeaderChangedListener != null) {
-                    mOnStickyHeaderChangedListener.onStickyHeaderChanged(this, mHeader, headerPosition, mHeaderId);
-                }
-                // Reset mHeaderOffset to null ensuring
-                // that it will be set on the header and
-                // not skipped for performance reasons.
-                mHeaderOffset = null;
-            }
-        }
-
-        int headerOffset = stickyHeaderTop();
-
-        // Calculate new header offset
-        // Skip looking at the first view. it never matters because it always
-        // results in a headerOffset = 0
-        for (int i = 0; i < mList.getChildCount(); i++) {
-            final View child = mList.getChildAt(i);
-            final boolean doesChildHaveHeader = child instanceof WrapperView && ((WrapperView) child).hasHeader();
-            final boolean isChildFooter = mList.containsFooterView(child);
-            if (child.getTop() >= stickyHeaderTop() && (doesChildHaveHeader || isChildFooter)) {
-                headerOffset = Math.min(child.getTop() - mHeader.getMeasuredHeight(), headerOffset);
-                break;
-            }
-        }
-
-        setHeaderOffet(headerOffset);
-
-        if (!mIsDrawingListUnderStickyHeader) {
-            mList.setTopClippingLength(mHeader.getMeasuredHeight()
-                    + mHeaderOffset);
-        }
-
-        updateHeaderVisibilities();
-    }
-
-    private void swapHeader(View newHeader) {
-        if (mHeader != null) {
-            removeView(mHeader);
-        }
-        mHeader = newHeader;
-        addView(mHeader);
-        if (mOnHeaderClickListener != null) {
-            mHeader.setOnClickListener(new OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    mOnHeaderClickListener.onHeaderClick(
-                            StickyListHeadersListView.this, mHeader,
-                            mHeaderPosition, mHeaderId, true);
-                }
-            });
-        }
-        mHeader.setClickable(true);
-    }
-
-    // hides the headers in the list under the sticky header.
-    // Makes sure the other ones are showing
-    private void updateHeaderVisibilities() {
-        int top = stickyHeaderTop();
-        int childCount = mList.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-
-            // ensure child is a wrapper view
-            View child = mList.getChildAt(i);
-            if (!(child instanceof WrapperView)) {
-                continue;
-            }
-
-            // ensure wrapper view child has a header
-            WrapperView wrapperViewChild = (WrapperView) child;
-            if (!wrapperViewChild.hasHeader()) {
-                continue;
-            }
-
-            // update header views visibility
-            View childHeader = wrapperViewChild.mHeader;
-            if (wrapperViewChild.getTop() < top) {
-                if (childHeader.getVisibility() != View.INVISIBLE) {
-                    childHeader.setVisibility(View.INVISIBLE);
-                }
-            } else {
-                if (childHeader.getVisibility() != View.VISIBLE) {
-                    childHeader.setVisibility(View.VISIBLE);
-                }
-            }
-        }
-    }
-
-    // Wrapper around setting the header offset in different ways depending on
-    // the API version
-    @SuppressLint("NewApi")
-    private void setHeaderOffet(int offset) {
-        if (mHeaderOffset == null || mHeaderOffset != offset) {
-            mHeaderOffset = offset;
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
-                mHeader.setTranslationY(mHeaderOffset);
-            } else {
-                MarginLayoutParams params = (MarginLayoutParams) mHeader.getLayoutParams();
-                params.topMargin = mHeaderOffset;
-                mHeader.setLayoutParams(params);
-            }
-            if (mOnStickyHeaderOffsetChangedListener != null) {
-                mOnStickyHeaderOffsetChangedListener.onStickyHeaderOffsetChanged(this, mHeader, -mHeaderOffset);
-            }
-        }
-    }
-
-    @Override
-    public boolean dispatchTouchEvent(MotionEvent ev) {
-        int action = ev.getAction() & MotionEvent.ACTION_MASK;
-        if (action == MotionEvent.ACTION_DOWN) {
-            mDownY = ev.getY();
-            mHeaderOwnsTouch = mHeader != null && mDownY <= mHeader.getHeight() + mHeaderOffset;
-        }
-
-        boolean handled;
-        if (mHeaderOwnsTouch) {
-            if (mHeader != null && Math.abs(mDownY - ev.getY()) <= mTouchSlop) {
-                handled = mHeader.dispatchTouchEvent(ev);
-            } else {
-                if (mHeader != null) {
-                    MotionEvent cancelEvent = MotionEvent.obtain(ev);
-                    cancelEvent.setAction(MotionEvent.ACTION_CANCEL);
-                    mHeader.dispatchTouchEvent(cancelEvent);
-                    cancelEvent.recycle();
-                }
-
-                MotionEvent downEvent = MotionEvent.obtain(ev.getDownTime(), ev.getEventTime(), ev.getAction(), ev.getX(), mDownY, ev.getMetaState());
-                downEvent.setAction(MotionEvent.ACTION_DOWN);
-                handled = mList.dispatchTouchEvent(downEvent);
-                downEvent.recycle();
-                mHeaderOwnsTouch = false;
-            }
-        } else {
-            handled = mList.dispatchTouchEvent(ev);
-        }
-
-        return handled;
-    }
-
-    private class AdapterWrapperDataSetObserver extends DataSetObserver {
-
-        @Override
-        public void onChanged() {
-            clearHeader();
-        }
-
-        @Override
-        public void onInvalidated() {
-            clearHeader();
-        }
-
-    }
-
-    private class WrapperListScrollListener implements OnScrollListener {
-
-        @Override
-        public void onScroll(AbsListView view, int firstVisibleItem,
-                             int visibleItemCount, int totalItemCount) {
-            if (mOnScrollListenerDelegate != null) {
-                mOnScrollListenerDelegate.onScroll(view, firstVisibleItem,
-                        visibleItemCount, totalItemCount);
-            }
-            updateOrClearHeader(mList.getFixedFirstVisibleItem());
-        }
-
-        @Override
-        public void onScrollStateChanged(AbsListView view, int scrollState) {
-            if (mOnScrollListenerDelegate != null) {
-                mOnScrollListenerDelegate.onScrollStateChanged(view,
-                        scrollState);
-            }
-        }
-
-    }
-
-    private class WrapperViewListLifeCycleListener implements WrapperViewList.LifeCycleListener {
-
-        @Override
-        public void onDispatchDrawOccurred(Canvas canvas) {
-            // onScroll is not called often at all before froyo
-            // therefor we need to update the header here as well.
-            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) {
-                updateOrClearHeader(mList.getFixedFirstVisibleItem());
-            }
-            if (mHeader != null) {
-                if (mClippingToPadding) {
-                    canvas.save();
-                    canvas.clipRect(0, mPaddingTop, getRight(), getBottom());
-                    drawChild(canvas, mHeader, 0);
-                    canvas.restore();
-                } else {
-                    drawChild(canvas, mHeader, 0);
-                }
-            }
-        }
-
-    }
-
-    private class AdapterWrapperHeaderClickHandler implements
-            AdapterWrapper.OnHeaderClickListener {
-
-        @Override
-        public void onHeaderClick(View header, int itemPosition, long headerId) {
-            mOnHeaderClickListener.onHeaderClick(
-                    StickyListHeadersListView.this, header, itemPosition,
-                    headerId, false);
-        }
-
-    }
-
-    private boolean isStartOfSection(int position) {
-        return position == 0 || mAdapter.getHeaderId(position) != mAdapter.getHeaderId(position - 1);
-    }
-
-    public int getHeaderOverlap(int position) {
-        boolean isStartOfSection = isStartOfSection(Math.max(0, position - getHeaderViewsCount()));
-        if (!isStartOfSection) {
-            View header = mAdapter.getHeaderView(position, null, mList);
-            if (header == null) {
-                throw new NullPointerException("header may not be null");
-            }
-            ensureHeaderHasCorrectLayoutParams(header);
-            measureHeader(header);
-            return header.getMeasuredHeight();
-        }
-        return 0;
-    }
-
-    private int stickyHeaderTop() {
-        return mStickyHeaderTopOffset + (mClippingToPadding ? mPaddingTop : 0);
-    }
-
-    /* ---------- StickyListHeaders specific API ---------- */
-
-    public void setAreHeadersSticky(boolean areHeadersSticky) {
-        mAreHeadersSticky = areHeadersSticky;
-        if (!areHeadersSticky) {
-            clearHeader();
-        } else {
-            updateOrClearHeader(mList.getFixedFirstVisibleItem());
-        }
-        // invalidating the list will trigger dispatchDraw()
-        mList.invalidate();
-    }
-
-    public boolean areHeadersSticky() {
-        return mAreHeadersSticky;
-    }
-
-    /**
-     * Use areHeadersSticky() method instead
-     */
-    @Deprecated
-    public boolean getAreHeadersSticky() {
-        return areHeadersSticky();
-    }
-
-    /**
-     *
-     * @param stickyHeaderTopOffset
-     *          The offset of the sticky header fom the top of the view
-     */
-    public void setStickyHeaderTopOffset(int stickyHeaderTopOffset) {
-        mStickyHeaderTopOffset = stickyHeaderTopOffset;
-        updateOrClearHeader(mList.getFixedFirstVisibleItem());
-    }
-
-    public int getStickyHeaderTopOffset() {
-        return mStickyHeaderTopOffset;
-    }
-
-    public void setDrawingListUnderStickyHeader(
-            boolean drawingListUnderStickyHeader) {
-        mIsDrawingListUnderStickyHeader = drawingListUnderStickyHeader;
-        // reset the top clipping length
-        mList.setTopClippingLength(0);
-    }
-
-    public boolean isDrawingListUnderStickyHeader() {
-        return mIsDrawingListUnderStickyHeader;
-    }
-
-    public void setOnHeaderClickListener(OnHeaderClickListener listener) {
-        mOnHeaderClickListener = listener;
-        if (mAdapter != null) {
-            if (mOnHeaderClickListener != null) {
-                mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler());
-
-                if (mHeader != null) {
-                    mHeader.setOnClickListener(new OnClickListener() {
-                        @Override
-                        public void onClick(View v) {
-                            mOnHeaderClickListener.onHeaderClick(
-                                    StickyListHeadersListView.this, mHeader,
-                                    mHeaderPosition, mHeaderId, true);
-                        }
-                    });
-                }
-            } else {
-                mAdapter.setOnHeaderClickListener(null);
-            }
-        }
-    }
-
-    public void setOnStickyHeaderOffsetChangedListener(OnStickyHeaderOffsetChangedListener listener) {
-        mOnStickyHeaderOffsetChangedListener = listener;
-    }
-
-    public void setOnStickyHeaderChangedListener(OnStickyHeaderChangedListener listener) {
-        mOnStickyHeaderChangedListener = listener;
-    }
-
-    public View getListChildAt(int index) {
-        return mList.getChildAt(index);
-    }
-
-    public int getListChildCount() {
-        return mList.getChildCount();
-    }
-
-    /**
-     * Use the method with extreme caution!! Changing any values on the
-     * underlying ListView might break everything.
-     *
-     * @return the ListView backing this view.
-     */
-    public ListView getWrappedList() {
-        return mList;
-    }
-
-    private boolean requireSdkVersion(int versionCode) {
-        if (Build.VERSION.SDK_INT < versionCode) {
-            Log.e("StickyListHeaders", "Api lvl must be at least "+versionCode+" to call this method");
-            return false;
-        }
-        return true;
-    }
-
-	/* ---------- ListView delegate methods ---------- */
-
-    public void setAdapter(StickyListHeadersAdapter adapter) {
-        if (adapter == null) {
-            if (mAdapter instanceof SectionIndexerAdapterWrapper) {
-                ((SectionIndexerAdapterWrapper) mAdapter).mSectionIndexerDelegate = null;
-            }
-            if (mAdapter != null) {
-                mAdapter.mDelegate = null;
-            }
-            mList.setAdapter(null);
-            clearHeader();
-            return;
-        }
-        if (mAdapter != null) {
-            mAdapter.unregisterDataSetObserver(mDataSetObserver);
-        }
-
-        if (adapter instanceof SectionIndexer) {
-            mAdapter = new SectionIndexerAdapterWrapper(getContext(), adapter);
-        } else {
-            mAdapter = new AdapterWrapper(getContext(), adapter);
-        }
-        mDataSetObserver = new AdapterWrapperDataSetObserver();
-        mAdapter.registerDataSetObserver(mDataSetObserver);
-
-        if (mOnHeaderClickListener != null) {
-            mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler());
-        } else {
-            mAdapter.setOnHeaderClickListener(null);
-        }
-
-        mAdapter.setDivider(mDivider, mDividerHeight);
-
-        mList.setAdapter(mAdapter);
-        clearHeader();
-    }
-
-    public StickyListHeadersAdapter getAdapter() {
-        return mAdapter == null ? null : mAdapter.mDelegate;
-    }
-
-    public void setDivider(Drawable divider) {
-        mDivider = divider;
-        if (mAdapter != null) {
-            mAdapter.setDivider(mDivider, mDividerHeight);
-        }
-    }
-
-    public void setDividerHeight(int dividerHeight) {
-        mDividerHeight = dividerHeight;
-        if (mAdapter != null) {
-            mAdapter.setDivider(mDivider, mDividerHeight);
-        }
-    }
-
-    public Drawable getDivider() {
-        return mDivider;
-    }
-
-    public int getDividerHeight() {
-        return mDividerHeight;
-    }
-
-    public void setOnScrollListener(OnScrollListener onScrollListener) {
-        mOnScrollListenerDelegate = onScrollListener;
-    }
-
-    @Override
-    public void setOnTouchListener(final OnTouchListener l) {
-        if (l != null) {
-            mList.setOnTouchListener(new OnTouchListener() {
-                @Override
-                public boolean onTouch(View v, MotionEvent event) {
-                    return l.onTouch(StickyListHeadersListView.this, event);
-                }
-            });
-        } else {
-            mList.setOnTouchListener(null);
-        }
-    }
-
-    public void setOnItemClickListener(OnItemClickListener listener) {
-        mList.setOnItemClickListener(listener);
-    }
-
-    public void setOnItemLongClickListener(OnItemLongClickListener listener) {
-        mList.setOnItemLongClickListener(listener);
-    }
-
-    public void addHeaderView(View v, Object data, boolean isSelectable) {
-        mList.addHeaderView(v, data, isSelectable);
-    }
-
-    public void addHeaderView(View v) {
-        mList.addHeaderView(v);
-    }
-
-    public void removeHeaderView(View v) {
-        mList.removeHeaderView(v);
-    }
-
-    public int getHeaderViewsCount() {
-        return mList.getHeaderViewsCount();
-    }
-    
-    public void addFooterView(View v, Object data, boolean isSelectable) {
-        mList.addFooterView(v, data, isSelectable);
-    }
-
-    public void addFooterView(View v) {
-        mList.addFooterView(v);
-    }
-
-    public void removeFooterView(View v) {
-        mList.removeFooterView(v);
-    }
-
-    public int getFooterViewsCount() {
-        return mList.getFooterViewsCount();
-    }
-
-    public void setEmptyView(View v) {
-        mList.setEmptyView(v);
-    }
-
-    public View getEmptyView() {
-        return mList.getEmptyView();
-    }
-
-    @Override
-    public boolean isVerticalScrollBarEnabled() {
-        return mList.isVerticalScrollBarEnabled();
-    }
-
-    @Override
-    public boolean isHorizontalScrollBarEnabled() {
-        return mList.isHorizontalScrollBarEnabled();
-    }
-
-    @Override
-    public void setVerticalScrollBarEnabled(boolean verticalScrollBarEnabled) {
-        mList.setVerticalScrollBarEnabled(verticalScrollBarEnabled);
-    }
-
-    @Override
-    public void setHorizontalScrollBarEnabled(boolean horizontalScrollBarEnabled) {
-        mList.setHorizontalScrollBarEnabled(horizontalScrollBarEnabled);
-    }
-
-    @Override
-    @TargetApi(Build.VERSION_CODES.GINGERBREAD)
-    public int getOverScrollMode() {
-        if (requireSdkVersion(Build.VERSION_CODES.GINGERBREAD)) {
-            return mList.getOverScrollMode();
-        }
-        return 0;
-    }
-
-    @Override
-    @TargetApi(Build.VERSION_CODES.GINGERBREAD)
-    public void setOverScrollMode(int mode) {
-        if (requireSdkVersion(Build.VERSION_CODES.GINGERBREAD)) {
-            if (mList != null) {
-                mList.setOverScrollMode(mode);
-            }
-        }
-    }
-
-    @TargetApi(Build.VERSION_CODES.FROYO)
-    public void smoothScrollBy(int distance, int duration) {
-        if (requireSdkVersion(Build.VERSION_CODES.FROYO)) {
-            mList.smoothScrollBy(distance, duration);
-        }
-    }
-
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public void smoothScrollByOffset(int offset) {
-        if (requireSdkVersion(Build.VERSION_CODES.HONEYCOMB)) {
-            mList.smoothScrollByOffset(offset);
-        }
-    }
-
-    @SuppressLint("NewApi")
-    @TargetApi(Build.VERSION_CODES.FROYO)
-    public void smoothScrollToPosition(int position) {
-        if (requireSdkVersion(Build.VERSION_CODES.FROYO)) {
-            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
-                mList.smoothScrollToPosition(position);
-            } else {
-                int offset = mAdapter == null ? 0 : getHeaderOverlap(position);
-                offset -= mClippingToPadding ? 0 : mPaddingTop;
-                mList.smoothScrollToPositionFromTop(position, offset);
-            }
-        }
-    }
-
-    @TargetApi(Build.VERSION_CODES.FROYO)
-    public void smoothScrollToPosition(int position, int boundPosition) {
-        if (requireSdkVersion(Build.VERSION_CODES.FROYO)) {
-            mList.smoothScrollToPosition(position, boundPosition);
-        }
-    }
-
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public void smoothScrollToPositionFromTop(int position, int offset) {
-        if (requireSdkVersion(Build.VERSION_CODES.HONEYCOMB)) {
-            offset += mAdapter == null ? 0 : getHeaderOverlap(position);
-            offset -= mClippingToPadding ? 0 : mPaddingTop;
-            mList.smoothScrollToPositionFromTop(position, offset);
-        }
-    }
-
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public void smoothScrollToPositionFromTop(int position, int offset,
-                                              int duration) {
-        if (requireSdkVersion(Build.VERSION_CODES.HONEYCOMB)) {
-            offset += mAdapter == null ? 0 : getHeaderOverlap(position);
-            offset -= mClippingToPadding ? 0 : mPaddingTop;
-            mList.smoothScrollToPositionFromTop(position, offset, duration);
-        }
-    }
-
-    public void setSelection(int position) {
-        setSelectionFromTop(position, 0);
-    }
-
-    public void setSelectionAfterHeaderView() {
-        mList.setSelectionAfterHeaderView();
-    }
-
-    public void setSelectionFromTop(int position, int y) {
-        y += mAdapter == null ? 0 : getHeaderOverlap(position);
-        y -= mClippingToPadding ? 0 : mPaddingTop;
-        mList.setSelectionFromTop(position, y);
-    }
-
-    public void setSelector(Drawable sel) {
-        mList.setSelector(sel);
-    }
-
-    public void setSelector(int resID) {
-        mList.setSelector(resID);
-    }
-
-    public int getFirstVisiblePosition() {
-        return mList.getFirstVisiblePosition();
-    }
-
-    public int getLastVisiblePosition() {
-        return mList.getLastVisiblePosition();
-    }
-
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public void setChoiceMode(int choiceMode) {
-        mList.setChoiceMode(choiceMode);
-    }
-
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public void setItemChecked(int position, boolean value) {
-        mList.setItemChecked(position, value);
-    }
-
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public int getCheckedItemCount() {
-        if (requireSdkVersion(Build.VERSION_CODES.HONEYCOMB)) {
-            return mList.getCheckedItemCount();
-        }
-        return 0;
-    }
-
-    @TargetApi(Build.VERSION_CODES.FROYO)
-    public long[] getCheckedItemIds() {
-        if (requireSdkVersion(Build.VERSION_CODES.FROYO)) {
-            return mList.getCheckedItemIds();
-        }
-        return null;
-    }
-
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public int getCheckedItemPosition() {
-        return mList.getCheckedItemPosition();
-    }
-
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public SparseBooleanArray getCheckedItemPositions() {
-        return mList.getCheckedItemPositions();
-    }
-
-    public int getCount() {
-        return mList.getCount();
-    }
-
-    public Object getItemAtPosition(int position) {
-        return mList.getItemAtPosition(position);
-    }
-
-    public long getItemIdAtPosition(int position) {
-        return mList.getItemIdAtPosition(position);
-    }
-
-    @Override
-    public void setOnCreateContextMenuListener(OnCreateContextMenuListener l) {
-        mList.setOnCreateContextMenuListener(l);
-    }
-
-    @Override
-    public boolean showContextMenu() {
-        return mList.showContextMenu();
-    }
-
-    public void invalidateViews() {
-        mList.invalidateViews();
-    }
-
-    @Override
-    public void setClipToPadding(boolean clipToPadding) {
-        if (mList != null) {
-            mList.setClipToPadding(clipToPadding);
-        }
-        mClippingToPadding = clipToPadding;
-    }
-
-    @Override
-    public void setPadding(int left, int top, int right, int bottom) {
-        mPaddingLeft = left;
-        mPaddingTop = top;
-        mPaddingRight = right;
-        mPaddingBottom = bottom;
-
-        if (mList != null) {
-            mList.setPadding(left, top, right, bottom);
-        }
-        super.setPadding(0, 0, 0, 0);
-        requestLayout();
-    }
-
-    /*
-     * Overrides an @hide method in View
-     */
-    protected void recomputePadding() {
-        setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom);
-    }
-
-    @Override
-    public int getPaddingLeft() {
-        return mPaddingLeft;
-    }
-
-    @Override
-    public int getPaddingTop() {
-        return mPaddingTop;
-    }
-
-    @Override
-    public int getPaddingRight() {
-        return mPaddingRight;
-    }
-
-    @Override
-    public int getPaddingBottom() {
-        return mPaddingBottom;
-    }
-
-    public void setFastScrollEnabled(boolean fastScrollEnabled) {
-        mList.setFastScrollEnabled(fastScrollEnabled);
-    }
-
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public void setFastScrollAlwaysVisible(boolean alwaysVisible) {
-        if (requireSdkVersion(Build.VERSION_CODES.HONEYCOMB)) {
-            mList.setFastScrollAlwaysVisible(alwaysVisible);
-        }
-    }
-
-    /**
-     * @return true if the fast scroller will always show. False on pre-Honeycomb devices.
-     * @see AbsListView#isFastScrollAlwaysVisible()
-     */
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public boolean isFastScrollAlwaysVisible() {
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
-            return false;
-        }
-        return mList.isFastScrollAlwaysVisible();
-    }
-
-    public void setScrollBarStyle(int style) {
-        mList.setScrollBarStyle(style);
-    }
-
-    public int getScrollBarStyle() {
-        return mList.getScrollBarStyle();
-    }
-
-    public int getPositionForView(View view) {
-        return mList.getPositionForView(view);
-    }
-
-    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public void setMultiChoiceModeListener(MultiChoiceModeListener listener) {
-        if (requireSdkVersion(Build.VERSION_CODES.HONEYCOMB)) {
-            mList.setMultiChoiceModeListener(listener);
-        }
-    }
-
-    @Override
-    public Parcelable onSaveInstanceState() {
-        Parcelable superState = super.onSaveInstanceState();
-        if (superState != BaseSavedState.EMPTY_STATE) {
-          throw new IllegalStateException("Handling non empty state of parent class is not implemented");
-        }
-        return mList.onSaveInstanceState();
-    }
-
-    @Override
-    public void onRestoreInstanceState(Parcelable state) {
-        super.onRestoreInstanceState(BaseSavedState.EMPTY_STATE);
-        mList.onRestoreInstanceState(state);
-    }
-
-    @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
-    @Override
-    public boolean canScrollVertically(int direction) {
-        return mList.canScrollVertically(direction);
-    }
-
-    public void setTranscriptMode (int mode) {
-        mList.setTranscriptMode(mode);
-    }
-
-    public void setBlockLayoutChildren(boolean blockLayoutChildren) {
-        mList.setBlockLayoutChildren(blockLayoutChildren);
-    }
-    
-    public void setStackFromBottom(boolean stackFromBottom) {
-    	mList.setStackFromBottom(stackFromBottom);
-    }
-
-    public boolean isStackFromBottom() {
-    	return mList.isStackFromBottom();
-    }
-}

+ 0 - 156
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/WrapperView.java

@@ -1,156 +0,0 @@
-package com.xzjmyk.pm.activity.view.stickylistheaders;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import android.os.Build;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.ViewParent;
-
-/**
- * 
- * the view that wrapps a divider header and a normal list item. The listview sees this as 1 item
- * 
- * @author Emil Sjölander
- */
-public class WrapperView extends ViewGroup {
-
-	View mItem;
-	Drawable mDivider;
-	int mDividerHeight;
-	View mHeader;
-	int mItemTop;
-
-	WrapperView(Context c) {
-		super(c);
-	}
-
-	public boolean hasHeader() {
-		return mHeader != null;
-	}
-	
-	public View getItem() {
-		return mItem;
-	}
-	
-	public View getHeader() {
-		return mHeader;
-	}
-
-	void update(View item, View header, Drawable divider, int dividerHeight) {
-		
-		//every wrapperview must have a list item
-		if (item == null) {
-			throw new NullPointerException("List view item must not be null.");
-		}
-
-		//only remove the current item if it is not the same as the new item. this can happen if wrapping a recycled view
-		if (this.mItem != item) {
-			removeView(this.mItem);
-			this.mItem = item;
-			final ViewParent parent = item.getParent();
-			if(parent != null && parent != this) {
-				if(parent instanceof ViewGroup) {
-					((ViewGroup) parent).removeView(item);
-				}
-			}
-			addView(item);
-		}
-
-		//same logik as above but for the header
-		if (this.mHeader != header) {
-			if (this.mHeader != null) {
-				removeView(this.mHeader);
-			}
-			this.mHeader = header;
-			if (header != null) {
-				addView(header);
-			}
-		}
-
-		if (this.mDivider != divider) {
-			this.mDivider = divider;
-			this.mDividerHeight = dividerHeight;
-			invalidate();
-		}
-	}
-
-	@Override
-	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-		int measuredWidth = MeasureSpec.getSize(widthMeasureSpec);
-		int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(measuredWidth,
-				MeasureSpec.EXACTLY);
-		int measuredHeight = 0;
-		
-		//measure header or divider. when there is a header visible it acts as the divider
-		if (mHeader != null) {
-			LayoutParams params = mHeader.getLayoutParams();
-			if (params != null && params.height > 0) {
-				mHeader.measure(childWidthMeasureSpec,
-						MeasureSpec.makeMeasureSpec(params.height, MeasureSpec.EXACTLY));
-			} else {
-				mHeader.measure(childWidthMeasureSpec,
-						MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
-			}
-			measuredHeight += mHeader.getMeasuredHeight();
-		} else if (mDivider != null&&mItem.getVisibility()!=View.GONE) {
-			measuredHeight += mDividerHeight;
-		}
-		
-		//measure item
-		LayoutParams params = mItem.getLayoutParams();
-        //enable hiding listview item,ex. toggle off items in group
-		if(mItem.getVisibility()==View.GONE){
-            mItem.measure(childWidthMeasureSpec,
-                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.EXACTLY));
-        }else if (params != null && params.height >= 0) {
-			mItem.measure(childWidthMeasureSpec,
-					MeasureSpec.makeMeasureSpec(params.height, MeasureSpec.EXACTLY));
-            measuredHeight += mItem.getMeasuredHeight();
-		} else {
-			mItem.measure(childWidthMeasureSpec,
-					MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
-            measuredHeight += mItem.getMeasuredHeight();
-		}
-
-
-		setMeasuredDimension(measuredWidth, measuredHeight);
-	}
-
-	@Override
-	protected void onLayout(boolean changed, int l, int t, int r, int b) {
-
-		l = 0;
-		t = 0;
-		r = getWidth();
-		b = getHeight();
-
-		if (mHeader != null) {
-			int headerHeight = mHeader.getMeasuredHeight();
-			mHeader.layout(l, t, r, headerHeight);
-			mItemTop = headerHeight;
-			mItem.layout(l, headerHeight, r, b);
-		} else if (mDivider != null) {
-			mDivider.setBounds(l, t, r, mDividerHeight);
-			mItemTop = mDividerHeight;
-			mItem.layout(l, mDividerHeight, r, b);
-		} else {
-			mItemTop = t;
-			mItem.layout(l, t, r, b);
-		}
-	}
-
-	@Override
-	protected void dispatchDraw(Canvas canvas) {
-		super.dispatchDraw(canvas);
-		if (mHeader == null && mDivider != null&&mItem.getVisibility()!=View.GONE) {
-			// Drawable.setBounds() does not seem to work pre-honeycomb. So have
-			// to do this instead
-			if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
-				canvas.clipRect(0, 0, getWidth(), mDividerHeight);
-			}
-			mDivider.draw(canvas);
-		}
-	}
-}

+ 0 - 197
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/WrapperViewList.java

@@ -1,197 +0,0 @@
-package com.xzjmyk.pm.activity.view.stickylistheaders;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Rect;
-import android.os.Build;
-import android.view.View;
-import android.widget.AbsListView;
-
-import com.core.widget.stickylistheaders.ListViewInScroller;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.List;
-
-class WrapperViewList extends ListViewInScroller {
-
-	public interface LifeCycleListener {
-		void onDispatchDrawOccurred(Canvas canvas);
-	}
-
-	private LifeCycleListener mLifeCycleListener;
-	private List<View> mFooterViews;
-	private int mTopClippingLength;
-	private Rect mSelectorRect = new Rect();// for if reflection fails
-	private Field mSelectorPositionField;
-	private boolean mClippingToPadding = true;
-    private boolean mBlockLayoutChildren = false;
-
-	public WrapperViewList(Context context) {
-		super(context);
-
-		// Use reflection to be able to change the size/position of the list
-		// selector so it does not come under/over the header
-		try {
-			Field selectorRectField = AbsListView.class.getDeclaredField("mSelectorRect");
-			selectorRectField.setAccessible(true);
-			mSelectorRect = (Rect) selectorRectField.get(this);
-
-			if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
-				mSelectorPositionField = AbsListView.class.getDeclaredField("mSelectorPosition");
-				mSelectorPositionField.setAccessible(true);
-			}
-		} catch (NoSuchFieldException e) {
-			e.printStackTrace();
-		} catch (IllegalArgumentException e) {
-			e.printStackTrace();
-		} catch (IllegalAccessException e) {
-			e.printStackTrace();
-		}
-	}
-
-	@Override
-	public boolean performItemClick(View view, int position, long id) {
-		if (view instanceof WrapperView) {
-			view = ((WrapperView) view).mItem;
-		}
-		return super.performItemClick(view, position, id);
-	}
-
-	private void positionSelectorRect() {
-		if (!mSelectorRect.isEmpty()) {
-			int selectorPosition = getSelectorPosition();
-			if (selectorPosition >= 0) {
-				int firstVisibleItem = getFixedFirstVisibleItem();
-				View v = getChildAt(selectorPosition - firstVisibleItem);
-				if (v instanceof WrapperView) {
-					WrapperView wrapper = ((WrapperView) v);
-					mSelectorRect.top = wrapper.getTop() + wrapper.mItemTop;
-				}
-			}
-		}
-	}
-
-	private int getSelectorPosition() {
-		if (mSelectorPositionField == null) { // not all supported andorid
-			// version have this variable
-			for (int i = 0; i < getChildCount(); i++) {
-				if (getChildAt(i).getBottom() == mSelectorRect.bottom) {
-					return i + getFixedFirstVisibleItem();
-				}
-			}
-		} else {
-			try {
-				return mSelectorPositionField.getInt(this);
-			} catch (IllegalArgumentException e) {
-				e.printStackTrace();
-			} catch (IllegalAccessException e) {
-				e.printStackTrace();
-			}
-		}
-		return -1;
-	}
-
-	@Override
-	protected void dispatchDraw(Canvas canvas) {
-		positionSelectorRect();
-		if (mTopClippingLength != 0) {
-			canvas.save();
-			Rect clipping = canvas.getClipBounds();
-			clipping.top = mTopClippingLength;
-			canvas.clipRect(clipping);
-			super.dispatchDraw(canvas);
-			canvas.restore();
-		} else {
-			super.dispatchDraw(canvas);
-		}
-		mLifeCycleListener.onDispatchDrawOccurred(canvas);
-	}
-
-	void setLifeCycleListener(LifeCycleListener lifeCycleListener) {
-		mLifeCycleListener = lifeCycleListener;
-	}
-
-	@Override
-	public void addFooterView(View v) {
-		super.addFooterView(v);
-		addInternalFooterView(v);
-	}
-
-	@Override
-	public void addFooterView(View v, Object data, boolean isSelectable) {
-		super.addFooterView(v, data, isSelectable);
-		addInternalFooterView(v);
-	}
-
-	private void addInternalFooterView(View v) {
-		if (mFooterViews == null) {
-			mFooterViews = new ArrayList<View>();
-		}
-		mFooterViews.add(v);
-	}
-
-	@Override
-	public boolean removeFooterView(View v) {
-		if (super.removeFooterView(v)) {
-			mFooterViews.remove(v);
-			return true;
-		}
-		return false;
-	}
-
-	boolean containsFooterView(View v) {
-		if (mFooterViews == null) {
-			return false;
-		}
-		return mFooterViews.contains(v);
-	}
-
-	void setTopClippingLength(int topClipping) {
-		mTopClippingLength = topClipping;
-	}
-
-	int getFixedFirstVisibleItem() {
-		int firstVisibleItem = getFirstVisiblePosition();
-		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
-			return firstVisibleItem;
-		}
-
-		// first getFirstVisiblePosition() reports items
-		// outside the view sometimes on old versions of android
-		for (int i = 0; i < getChildCount(); i++) {
-			if (getChildAt(i).getBottom() >= 0) {
-				firstVisibleItem += i;
-				break;
-			}
-		}
-
-		// work around to fix bug with firstVisibleItem being to high
-		// because list view does not take clipToPadding=false into account
-		// on old versions of android
-		if (!mClippingToPadding && getPaddingTop() > 0 && firstVisibleItem > 0) {
-			if (getChildAt(0).getTop() > 0) {
-				firstVisibleItem -= 1;
-			}
-		}
-
-		return firstVisibleItem;
-	}
-
-	@Override
-	public void setClipToPadding(boolean clipToPadding) {
-		mClippingToPadding = clipToPadding;
-		super.setClipToPadding(clipToPadding);
-	}
-
-    public void setBlockLayoutChildren(boolean block) {
-        mBlockLayoutChildren = block;
-    }
-
-    @Override
-    protected void layoutChildren() {
-        if (!mBlockLayoutChildren) {
-            super.layoutChildren();
-        }
-    }
-}

+ 1 - 1
WeiChat/src/main/res/layout/act_sale_detail_list.xml

@@ -50,7 +50,7 @@
                 android:textSize="20sp"
                 android:visibility="gone" />
 
-            <com.core.widget.stickylistheaders.ListViewInScroller
+            <com.uas.appcontact.ui.widget.stickylistheaders.ListViewInScroller
                 android:id="@+id/lv_detail_data"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"

+ 1 - 1
WeiChat/src/main/res/layout/activity_business_detail_info.xml

@@ -370,7 +370,7 @@
                     android:text="@string/Stage_requirements"
                     android:textColor="@color/titleBlue"/>
 
-                <com.xzjmyk.pm.activity.view.stickylistheaders.StickyListHeadersListView
+                <com.uas.appcontact.ui.widget.stickylistheaders.StickyListHeadersListView
                     android:id="@+id/lv_business"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"/>

+ 1 - 1
WeiChat/src/main/res/layout/activity_business_less.xml

@@ -90,7 +90,7 @@
                 android:hint="请选择(必填)" />
         </LinearLayout>
         
-        <com.core.widget.stickylistheaders.ListViewInScroller
+        <com.uas.appcontact.ui.widget.stickylistheaders.ListViewInScroller
             android:id="@+id/lv_datas"
             android:layout_width="match_parent"
             android:layout_height="match_parent"/>

+ 1 - 1
WeiChat/src/main/res/layout/activity_data_form_detail.xml

@@ -14,7 +14,7 @@
         android:layout_height="match_parent"
         android:orientation="vertical">
 
-        <com.core.widget.stickylistheaders.ListViewInScroller
+        <com.uas.appcontact.ui.widget.stickylistheaders.ListViewInScroller
             android:id="@+id/lv_datas"
             android:layout_width="match_parent"
             android:layout_height="match_parent"

+ 1 - 1
WeiChat/src/main/res/layout/inculde_grid_view.xml

@@ -21,7 +21,7 @@
                        android:orientation="vertical">-->
         <!--            <View style="@style/horizontal_layout" />
                     <View style="@style/horizontal_layout" />-->
-                <com.core.widget.stickylistheaders.ListViewInScroller
+                <com.uas.appcontact.ui.widget.stickylistheaders.ListViewInScroller
                     android:id="@+id/lv_grid_dispaly"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"

+ 0 - 226
app_core/common/src/main/java/com/core/widget/stickylistheaders/AdapterWrapper.java

@@ -1,226 +0,0 @@
-package com.core.widget.stickylistheaders;
-
-import android.content.Context;
-import android.database.DataSetObserver;
-import android.graphics.drawable.Drawable;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.Checkable;
-import android.widget.ListAdapter;
-
-import java.util.LinkedList;
-import java.util.List;
-
-
-/**
- * A {@link ListAdapter} which wraps a {@link StickyListHeadersAdapter} and
- * automatically handles wrapping the result of
- * {@link StickyListHeadersAdapter#getView(int, View, ViewGroup)}
- * and
- * {@link StickyListHeadersAdapter#getHeaderView(int, View, ViewGroup)}
- * appropriately.
- *
- * @author Jake Wharton (jakewharton@gmail.com)
- */
-class AdapterWrapper extends BaseAdapter implements StickyListHeadersAdapter {
-
-	interface OnHeaderClickListener {
-		void onHeaderClick(View header, int itemPosition, long headerId);
-	}
-
-	StickyListHeadersAdapter mDelegate;
-	private final List<View> mHeaderCache = new LinkedList<View>();
-	private final Context mContext;
-	private Drawable mDivider;
-	private int mDividerHeight;
-	private OnHeaderClickListener mOnHeaderClickListener;
-	private DataSetObserver mDataSetObserver = new DataSetObserver() {
-
-		@Override
-		public void onInvalidated() {
-			mHeaderCache.clear();
-			AdapterWrapper.super.notifyDataSetInvalidated();
-		}
-		
-		@Override
-		public void onChanged() {
-			AdapterWrapper.super.notifyDataSetChanged();
-		}
-	};
-
-	AdapterWrapper(Context context,
-			StickyListHeadersAdapter delegate) {
-		this.mContext = context;
-		this.mDelegate = delegate;
-		delegate.registerDataSetObserver(mDataSetObserver);
-	}
-
-	void setDivider(Drawable divider, int dividerHeight) {
-		this.mDivider = divider;
-		this.mDividerHeight = dividerHeight;
-		notifyDataSetChanged();
-	}
-
-	@Override
-	public boolean areAllItemsEnabled() {
-		return mDelegate.areAllItemsEnabled();
-	}
-
-	@Override
-	public boolean isEnabled(int position) {
-		return mDelegate.isEnabled(position);
-	}
-
-	@Override
-	public int getCount() {
-		return mDelegate.getCount();
-	}
-
-	@Override
-	public Object getItem(int position) {
-		return mDelegate.getItem(position);
-	}
-
-	@Override
-	public long getItemId(int position) {
-		return mDelegate.getItemId(position);
-	}
-
-	@Override
-	public boolean hasStableIds() {
-		return mDelegate.hasStableIds();
-	}
-
-	@Override
-	public int getItemViewType(int position) {
-		return mDelegate.getItemViewType(position);
-	}
-
-	@Override
-	public int getViewTypeCount() {
-		return mDelegate.getViewTypeCount();
-	}
-
-	@Override
-	public boolean isEmpty() {
-		return mDelegate.isEmpty();
-	}
-
-	/**
-	 * Will recycle header from {@link WrapperView} if it exists
-	 */
-	private void recycleHeaderIfExists(WrapperView wv) {
-		View header = wv.mHeader;
-		if (header != null) {
-			// reset the headers visibility when adding it to the cache
-			header.setVisibility(View.VISIBLE);
-			mHeaderCache.add(header);
-		}
-	}
-
-	/**
-	 * Get a header view. This optionally pulls a header from the supplied
-	 * {@link WrapperView} and will also recycle the divider if it exists.
-	 */
-	private View configureHeader(WrapperView wv, final int position) {
-		View header = wv.mHeader == null ? popHeader() : wv.mHeader;
-		header = mDelegate.getHeaderView(position, header, wv);
-		if (header == null) {
-			throw new NullPointerException("Header view must not be null.");
-		}
-		//if the header isn't clickable, the listselector will be drawn on top of the header
-		header.setClickable(true);
-		header.setOnClickListener(new OnClickListener() {
-
-			@Override
-			public void onClick(View v) {
-				if(mOnHeaderClickListener != null){
-					long headerId = mDelegate.getHeaderId(position);
-					mOnHeaderClickListener.onHeaderClick(v, position, headerId);
-				}
-			}
-		});
-		return header;
-	}
-
-	private View popHeader() {
-		if(mHeaderCache.size() > 0) {
-			return mHeaderCache.remove(0);
-		}
-		return null;
-	}
-
-	/** Returns {@code true} if the previous position has the same header ID. */
-	private boolean previousPositionHasSameHeader(int position) {
-		return position != 0
-				&& mDelegate.getHeaderId(position) == mDelegate
-						.getHeaderId(position - 1);
-	}
-
-	@Override
-	public WrapperView getView(int position, View convertView, ViewGroup parent) {
-		WrapperView wv = (convertView == null) ? new WrapperView(mContext) : (WrapperView) convertView;
-		View item = mDelegate.getView(position, wv.mItem, parent);
-		View header = null;
-		if (previousPositionHasSameHeader(position)) {
-			recycleHeaderIfExists(wv);
-		} else {
-			header = configureHeader(wv, position);
-		}
-		if((item instanceof Checkable) && !(wv instanceof CheckableWrapperView)) {
-			// Need to create Checkable subclass of WrapperView for ListView to work correctly
-			wv = new CheckableWrapperView(mContext);
-		} else if(!(item instanceof Checkable) && (wv instanceof CheckableWrapperView)) {
-			wv = new WrapperView(mContext);
-		}
-		wv.update(item, header, mDivider, mDividerHeight);
-		return wv;
-	}
-
-	public void setOnHeaderClickListener(OnHeaderClickListener onHeaderClickListener){
-		this.mOnHeaderClickListener = onHeaderClickListener;
-	}
-
-	@Override
-	public boolean equals(Object o) {
-		return mDelegate.equals(o); 
-	}
-
-	@Override
-	public View getDropDownView(int position, View convertView, ViewGroup parent) {
-		return ((BaseAdapter) mDelegate).getDropDownView(position, convertView, parent);
-	}
-
-	@Override
-	public int hashCode() {
-		return mDelegate.hashCode();
-	}
-
-	@Override
-	public void notifyDataSetChanged() {
-		((BaseAdapter) mDelegate).notifyDataSetChanged();
-	}
-
-	@Override
-	public void notifyDataSetInvalidated() {
-		((BaseAdapter) mDelegate).notifyDataSetInvalidated();
-	}
-
-	@Override
-	public String toString() {
-		return mDelegate.toString();
-	}
-
-	@Override
-	public View getHeaderView(int position, View convertView, ViewGroup parent) {
-		return mDelegate.getHeaderView(position, convertView, parent);
-	}
-
-	@Override
-	public long getHeaderId(int position) {
-		return mDelegate.getHeaderId(position);
-	}
-
-}

+ 0 - 32
app_core/common/src/main/java/com/core/widget/stickylistheaders/CheckableWrapperView.java

@@ -1,32 +0,0 @@
-package com.core.widget.stickylistheaders;
-
-import android.content.Context;
-import android.widget.Checkable;
-
-
-/**
- * A WrapperView that implements the checkable interface
- * 
- * @author Emil Sjölander
- */
-class CheckableWrapperView extends WrapperView implements Checkable {
-
-	public CheckableWrapperView(final Context context) {
-		super(context);
-	}
-
-	@Override
-	public boolean isChecked() {
-		return ((Checkable) mItem).isChecked();
-	}
-
-	@Override
-	public void setChecked(final boolean checked) {
-		((Checkable) mItem).setChecked(checked);
-	}
-
-	@Override
-	public void toggle() {
-		setChecked(!isChecked());
-	}
-}

+ 0 - 131
app_core/common/src/main/java/com/core/widget/stickylistheaders/ExpandableStickyListHeadersAdapter.java

@@ -1,131 +0,0 @@
-package com.core.widget.stickylistheaders;
-
-import android.database.DataSetObserver;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-/**
- * @author lsjwzh
- */
- class ExpandableStickyListHeadersAdapter extends BaseAdapter implements StickyListHeadersAdapter {
-
-    private final StickyListHeadersAdapter mInnerAdapter;
-    DualHashMap<View,Long> mViewToItemIdMap = new DualHashMap<View, Long>();
-    DistinctMultiHashMap<Integer,View> mHeaderIdToViewMap = new DistinctMultiHashMap<Integer, View>();
-    List<Long> mCollapseHeaderIds = new ArrayList<Long>();
-
-    ExpandableStickyListHeadersAdapter(StickyListHeadersAdapter innerAdapter){
-        this.mInnerAdapter = innerAdapter;
-    }
-
-    @Override
-    public View getHeaderView(int position, View convertView, ViewGroup parent) {
-        return mInnerAdapter.getHeaderView(position,convertView,parent);
-    }
-
-    @Override
-    public long getHeaderId(int position) {
-        return mInnerAdapter.getHeaderId(position);
-    }
-
-    @Override
-    public boolean areAllItemsEnabled() {
-        return mInnerAdapter.areAllItemsEnabled();
-    }
-
-    @Override
-    public boolean isEnabled(int i) {
-        return mInnerAdapter.isEnabled(i);
-    }
-
-    @Override
-    public void registerDataSetObserver(DataSetObserver dataSetObserver) {
-        mInnerAdapter.registerDataSetObserver(dataSetObserver);
-    }
-
-    @Override
-    public void unregisterDataSetObserver(DataSetObserver dataSetObserver) {
-        mInnerAdapter.unregisterDataSetObserver(dataSetObserver);
-    }
-
-    @Override
-    public int getCount() {
-        return mInnerAdapter.getCount();
-    }
-
-    @Override
-    public Object getItem(int i) {
-        return mInnerAdapter.getItem(i);
-    }
-
-    @Override
-    public long getItemId(int i) {
-        return mInnerAdapter.getItemId(i);
-    }
-
-    @Override
-    public boolean hasStableIds() {
-        return mInnerAdapter.hasStableIds();
-    }
-
-    @Override
-    public View getView(int i, View view, ViewGroup viewGroup) {
-        View convertView = mInnerAdapter.getView(i,view,viewGroup);
-        mViewToItemIdMap.put(convertView, getItemId(i));
-        mHeaderIdToViewMap.add((int) getHeaderId(i), convertView);
-        if(mCollapseHeaderIds.contains(getHeaderId(i))){
-            convertView.setVisibility(View.GONE);
-        }else {
-            convertView.setVisibility(View.VISIBLE);
-        }
-        return convertView;
-    }
-
-    @Override
-    public int getItemViewType(int i) {
-        return mInnerAdapter.getItemViewType(i);
-    }
-
-    @Override
-    public int getViewTypeCount() {
-        return mInnerAdapter.getViewTypeCount();
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return mInnerAdapter.isEmpty();
-    }
-
-    public List<View> getItemViewsByHeaderId(long headerId){
-        return mHeaderIdToViewMap.get((int) headerId);
-    }
-
-    public boolean isHeaderCollapsed(long headerId){
-        return mCollapseHeaderIds.contains(headerId);
-    }
-
-    public void expand(long headerId) {
-        if(isHeaderCollapsed(headerId)){
-            mCollapseHeaderIds.remove((Object) headerId);
-        }
-    }
-
-    public void collapse(long headerId) {
-        if(!isHeaderCollapsed(headerId)){
-            mCollapseHeaderIds.add(headerId);
-        }
-    }
-
-    public View findViewByItemId(long itemId){
-         return mViewToItemIdMap.getKey(itemId);
-    }
-
-    public long findItemIdByView(View view){
-        return mViewToItemIdMap.get(view);
-    }
-}

+ 0 - 32
app_core/common/src/main/java/com/core/widget/stickylistheaders/SectionIndexerAdapterWrapper.java

@@ -1,32 +0,0 @@
-package com.core.widget.stickylistheaders;
-
-import android.content.Context;
-import android.widget.SectionIndexer;
-
-class SectionIndexerAdapterWrapper extends
-		AdapterWrapper implements SectionIndexer {
-	
-	SectionIndexer mSectionIndexerDelegate;
-
-	SectionIndexerAdapterWrapper(Context context,
-			StickyListHeadersAdapter delegate) {
-		super(context, delegate);
-		mSectionIndexerDelegate = (SectionIndexer) delegate;
-	}
-
-	@Override
-	public int getPositionForSection(int section) {
-		return mSectionIndexerDelegate.getPositionForSection(section);
-	}
-
-	@Override
-	public int getSectionForPosition(int position) {
-		return mSectionIndexerDelegate.getSectionForPosition(position);
-	}
-
-	@Override
-	public Object[] getSections() {
-		return mSectionIndexerDelegate.getSections();
-	}
-
-}

+ 3 - 3
app_core/common/src/main/java/com/core/xmpp/widget/ChatContentView.java

@@ -1260,14 +1260,14 @@ public class ChatContentView extends PullDownListView implements VoicePlayer.OnM
                 // 获得剪切板管理者,复制文本内容
                 ClipboardManager cmb = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE);
                 cmb.setText(charSequence);
-            }else if ( R.id.btn_instant==id){
+            } else if (R.id.btn_instant == id) {
                 Intent intent = new Intent("com.modular.message.InstantMessageActivity");
                 Bundle bundle = new Bundle();
                 bundle.putParcelable(Constants.INSTANT_MESSAGE, message);
                 intent.putExtras(bundle);
                 mContext.startActivity(intent);
                 ((Activity) mContext).finish();
-            }else if ( R.id.btn_delete==id){
+            } else if (R.id.btn_delete == id) {
                 ToastUtil.showToast(mContext, R.string.delete_all_succ);
               /* if(mChatMessages!=null){
                    mChatMessages.remove(position);
@@ -1276,7 +1276,7 @@ public class ChatContentView extends PullDownListView implements VoicePlayer.OnM
                 broadcast.putExtra(Constants.CHAT_REMOVE_MESSAGE_FALG, 1);
                 broadcast.putExtra(Constants.CHAT_REMOVE_MESSAGE_POSITION, position);
                 mContext.sendBroadcast(broadcast);
-            }else if ( R.id.btn_more==id){
+            } else if (R.id.btn_more == id) {
                 if (ints == null) {
                     ints = new ArrayList<>();
                 }

+ 1 - 1
app_core/common/src/main/res/layout/activity_business_detail_info.xml

@@ -370,7 +370,7 @@
                     android:text="@string/Stage_requirements"
                     android:textColor="@color/titleBlue"/>
 
-                <com.xzjmyk.pm.activity.view.stickylistheaders.StickyListHeadersListView
+                <com.uas.appcontact.ui.widget.stickylistheaders.StickyListHeadersListView
                     android:id="@+id/lv_business"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"/>

+ 1 - 1
app_core/common/src/main/res/layout/fragment_contact.xml

@@ -8,7 +8,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
-        <com.core.widget.stickylistheaders.StickyListHeadersListView
+        <com.uas.appcontact.ui.widget.stickylistheaders.StickyListHeadersListView
             android:id="@+id/pull_refresh_list"
             android:layout_width="match_parent"
             android:layout_height="match_parent"/>

+ 28 - 4
app_modular/appcontact/src/main/AndroidManifest.xml

@@ -1,9 +1,33 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.uas.appcontact">
 
-          package="com.me.appcontact">
-
-    <application android:allowBackup="true" android:label="@string/app_name" android:supportsRtl="true">
-
+    <application
+        android:allowBackup="true"
+        android:label="@string/app_name"
+        android:supportsRtl="true">
+        <activity android:name="com.uas.appcontact.ui.activity.NewFriendActivity" />
+        <activity
+            android:name="com.uas.appcontact.ui.activity.MyFriendActivity"
+            android:windowSoftInputMode="stateUnspecified|adjustNothing" />
+        <activity
+            android:name="com.uas.appcontact.ui.activity.ContactsActivity"
+            android:windowSoftInputMode="adjustPan" />
+        <activity
+            android:name="com.uas.appcontact.ui.activity.CompanyContactsActivity"
+            android:windowSoftInputMode="stateVisible|adjustResize" />
+        <activity android:name="com.uas.appcontact.ui.activity.CommonFragmentActivity" />
+        <!-- 附近模块 -->
+        <activity
+            android:name="com.uas.appcontact.ui.activity.UserSearchActivity"
+            android:windowSoftInputMode="stateHidden|stateAlwaysHidden" />
+        <activity android:name="com.uas.appcontact.ui.activity.UserListActivity" />
+        <activity
+            android:name="com.uas.appcontact.ui.activity.SelectDateActivity"
+            android:screenOrientation="portrait" />
+        <activity
+            android:name="com.uas.appcontact.ui.activity.PlatContactAddPeopleActivity"
+            android:label="@string/add_new_people"
+            android:windowSoftInputMode="adjustPan" />
     </application>
 
 </manifest>

+ 21 - 12
app_modular/appcontact/src/main/java/com/me/appcontact/manager/ContactsManager.java

@@ -41,10 +41,24 @@ import java.util.Map;
  */
 public class ContactsManager implements OnHttpResultListener {
     private final int LOAD_COMPANY_WHAT = 1;
+    private static ContactsManager instance;
 
+    public static ContactsManager getInstance() {
+        if (instance == null) {
+            synchronized (ContactsManager.class) {
+                if (instance == null) {
+                    instance = new ContactsManager();
+                }
+            }
+        }
+        return instance;
+    }
+
+    private ContactsManager() {
+    }
 
     //获取通讯录数据。当数据库不存在时候,获取网络数据
-    public void loadContact(final OnEmployListener listener) throws Exception {
+    public void loadContact(final OnEmployListener listener){
         ThreadUtil.getInstance().addLoopTask(new Runnable() {
             @Override
             public void run() {
@@ -91,11 +105,6 @@ public class ContactsManager implements OnHttpResultListener {
     }
 
 
-
-
-
-
-
     @Override
     public void result(int what, boolean isJSON, String message, Bundle bundle) {
         if (!isJSON) return;
@@ -136,7 +145,7 @@ public class ContactsManager implements OnHttpResultListener {
         });
     }
 
-    public static List<EmployeesEntity> getB2BEmployees(JSONObject object) throws Exception {
+    private List<EmployeesEntity> getB2BEmployees(JSONObject object) throws Exception {
         if (object == null) return null;
         JSONArray array = null;
         if (object.containsKey("data") && object.get("data") instanceof JSONArray)
@@ -165,14 +174,14 @@ public class ContactsManager implements OnHttpResultListener {
         return emList;
     }
 
-    public static List<EmployeesEntity> getERPEmployees(JSONObject jsonobject) throws Exception {
+    private List<EmployeesEntity> getERPEmployees(JSONObject jsonobject) throws Exception {
         List<HrorgsEntity> hrorgsEntities = JSON.parseArray(jsonobject.getString("hrorgs"), HrorgsEntity.class);
         List<EmployeesEntity> employeesEntities = JSON.parseArray(jsonobject.getString("employees"), EmployeesEntity.class);
         save2DbAsyn(jsonobject, hrorgsEntities, employeesEntities);
         return employeesEntities;
     }
 
-    private static void save2DbAsyn(final JSONObject jsonobject, final List<HrorgsEntity> hrorgsEntities, final List<EmployeesEntity> employeesEntities) {
+    private void save2DbAsyn(final JSONObject jsonobject, final List<HrorgsEntity> hrorgsEntities, final List<EmployeesEntity> employeesEntities) {
         String server_time = jsonobject.getString("sysdate");//服务器系统时间
         //实体类
         String master = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
@@ -193,7 +202,7 @@ public class ContactsManager implements OnHttpResultListener {
      * @功能:写入数据库 isFristLoad 标志是否是第一次加载(数据库是否有缓存);
      * 因为第一次,flag字段不管是更新或者是插入,都执行插入操作;
      */
-    private static void insertDataSqlite(DBManager manager, boolean isFristLoad, List<HrorgsEntity> hrorgsEntities, List<EmployeesEntity> employeesEntities, String servertime) {
+    private void insertDataSqlite(DBManager manager, boolean isFristLoad, List<HrorgsEntity> hrorgsEntities, List<EmployeesEntity> employeesEntities, String servertime) {
         if (isFristLoad) {
             manager.saveHrogrs(hrorgsEntities);
             manager.saveEmployees(employeesEntities);
@@ -219,7 +228,7 @@ public class ContactsManager implements OnHttpResultListener {
      * @author Administrator
      * @功能:同步数据
      */
-    private static void synSqliteDataforServer(DBManager manager, List<HrorgsEntity> hrorgsEntities, List<EmployeesEntity> employeesEntities) {
+    private void synSqliteDataforServer(DBManager manager, List<HrorgsEntity> hrorgsEntities, List<EmployeesEntity> employeesEntities) {
         if (!hrorgsEntities.isEmpty()) {
             List<HrorgsEntity> insertHrorgsList = new ArrayList<HrorgsEntity>();
             List<HrorgsEntity> updateHrorgsList = new ArrayList<HrorgsEntity>();
@@ -269,7 +278,7 @@ public class ContactsManager implements OnHttpResultListener {
      * @author Administrator
      * @功能:时间减法
      */
-    private static String dateMinute(String datetime) {
+    private String dateMinute(String datetime) {
         String str = datetime;
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         Date date = new Date();

+ 2 - 2
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/CompanyContactsActivity.java

@@ -641,8 +641,8 @@ public class CompanyContactsActivity extends BaseActivity {
         if (friendOne == null) {
             FriendDao.getInstance().createOrUpdateFriend(friend);
         }
-        Intent intent = new Intent(CompanyContactsActivity.this, ChatActivity.class);
-        intent.putExtra(ChatActivity.FRIEND, friend);
+        Intent intent = new Intent("com.modular.message.ChatActivity" );
+        intent.putExtra("friend", friend);
         startActivity(intent);
     }
 

+ 2 - 2
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/activity/MyFriendActivity.java

@@ -160,8 +160,8 @@ public class MyFriendActivity extends BaseActivity {
                 if (friend.getUserId().equals(Friend.ID_NEW_FRIEND_MESSAGE)) {// 新朋友消息
                     intent = new Intent(MyFriendActivity.this, NewFriendActivity.class);
                 } else if (friend.getUserId().equals(Friend.ID_SYSTEM_MESSAGE)) {// 新朋友消息
-                    intent = new Intent(MyFriendActivity.this, ChatActivity.class);
-                    intent.putExtra(ChatActivity.FRIEND, friend);
+                    intent = new Intent("com.modular.message.ChatActivity");
+                    intent.putExtra("friend", friend);
 
                 } else {
                     intent = new Intent("com.modular.basic.BasicInfoActivity");

+ 39 - 83
app_modular/appcontact/src/main/java/com/uas/appcontact/ui/fragment/ContactFragment.java

@@ -5,8 +5,6 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.support.v4.content.LocalBroadcastManager;
 import android.text.Editable;
 import android.text.TextUtils;
@@ -21,25 +19,20 @@ import android.widget.LinearLayout;
 import android.widget.PopupWindow;
 import android.widget.TextView;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.common.system.DisplayUtil;
-import com.common.thread.ThreadPool;
+import com.common.thread.ThreadUtil;
 import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.base.EasyFragment;
 import com.core.broadcast.MsgBroadcast;
-import com.core.dao.DBManager;
 import com.core.model.EmployeesEntity;
 import com.core.model.Friend;
 import com.core.net.http.http.OAHttpHelper;
-import com.core.utils.CommonInterface;
 import com.core.utils.CommonUtil;
-import com.core.utils.CompanyHandlerInfoUtil;
 import com.core.widget.CustomProgressDialog;
 import com.core.widget.VoiceSearchView;
 import com.core.widget.listener.EditChangeListener;
@@ -47,12 +40,12 @@ import com.core.utils.sortlist.BaseComparator;
 import com.core.utils.sortlist.BaseSortModel;
 import com.core.utils.sortlist.PingYinUtil;
 import com.core.utils.sortlist.SideBar;
-import com.core.widget.stickylistheaders.StickyListHeadersListView;
+import com.uas.appcontact.ui.widget.stickylistheaders.StickyListHeadersListView;
 import com.core.xmpp.utils.AppConstant;
 import com.me.appcontact.R;
 import com.uas.appcontact.adapter.FriendSortAdapter;
 import com.uas.appcontact.listener.ImStatusListener;
-import com.uas.appcontact.ui.activity.ChatActivity;
+import com.uas.appcontact.manager.ContactsManager;
 import com.uas.appcontact.ui.activity.CommonFragmentActivity;
 import com.uas.appcontact.ui.activity.CompanyContactsActivity;
 import com.uas.appcontact.ui.activity.ContactsActivity;
@@ -70,7 +63,7 @@ import java.util.List;
 /**
  * Created by pengminggong on 2016/10/12.
  */
-public class ContactFragment extends EasyFragment implements View.OnClickListener {
+public class ContactFragment extends EasyFragment implements View.OnClickListener,ContactsManager.OnEmployListener {
     private SideBar sidebar;
     private TextView text_dialog;
     private StickyListHeadersListView refreshListView;
@@ -92,7 +85,7 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
         @Override
         public void onReceive(Context context, Intent intent) {
             if (intent.getAction().equals("com.app.home.update") || intent.getAction().equals(MsgBroadcast.ACTION_MSG_COMPANY_UPDATE)) {//账套变更,重新刷新数据,初始化任务
-                loadDataInThread();
+                loadData();
             }
         }
     };
@@ -238,10 +231,8 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
                 if ("1".equals(CommonUtil.getUserRole())) {
                     mPullToRefreshView.setRefreshing(false, false);
                     mcProgressDialog.dismiss();
-
                 } else {
-                    loadFriendsNet();
-
+                   ContactsManager.getInstance().loadContactByNet(ContactFragment.this);
                 }
 
             }
@@ -284,10 +275,7 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
         sidebar.setTextView(text_dialog);
         adapter = new FriendSortAdapter(ct, showDatas);
         refreshListView.setAdapter(adapter);
-        loadDataInThread();
-        //mcProgressDialog.show();
-
-
+        loadData();
     }
 
     @Override
@@ -315,8 +303,8 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
         if (friend.getUserId().equals(Friend.ID_NEW_FRIEND_MESSAGE)) {// 新朋友消息
             intent = new Intent(getActivity(), NewFriendActivity.class);
         } else if (friend.getUserId().equals(Friend.ID_SYSTEM_MESSAGE)) {// 新朋友消息
-            intent = new Intent(getActivity(), ChatActivity.class);
-            intent.putExtra(ChatActivity.FRIEND, friend);
+            intent = new Intent("com.modular.message.ChatActivity");
+            intent.putExtra("friend", friend);
         } else {
             intent = new Intent("com.modular.basic.BasicInfoActivity");
             intent.putExtra(AppConstant.EXTRA_NICK_CODE, friend.getPhone());
@@ -328,38 +316,23 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
         startActivity(intent);
     }
 
+    void showLoading() {
 
-    /*开启线程获取数据*/
-    private void loadDataInThread() {
-        ThreadPool.getThreadPool().addTask(new Runnable() {
-            @Override
-            public void run() {
-                List<BaseSortModel<Friend>> chche = null;//通过数据库获取数据
-                try {
-                    chche = getFriendsByErpDB(getEmListByDB());
-                    if (ListUtils.isEmpty(chche)) {
-                        OAHttpHelper.getInstance().post(new Runnable() {
-                            @Override
-                            public void run() {
-                                loadFriendsNet();
-                            }
-                        });
-                    } else loadDataInThread(chche);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        });
+    }//显示刷新
+
+    void dimssLoading() {
+
+    }//关闭刷新
+
+    private void loadData() {
+        showLoading();
+        ContactsManager.getInstance().loadContact(this);
     }
 
-    /*在线程中处理数据
-    * 1.数据库获取
-    * 2.网络获取
-    * */
-    private void loadDataInThread(List<BaseSortModel<Friend>> chche) throws Exception {
-        allDatas = chche;
+    private void handlerData(List<BaseSortModel<Friend>> friends ) {
+        allDatas = friends;
         if (voiceSearchView == null || TextUtils.isEmpty(voiceSearchView.getText())) {//没有搜索数据
-            showDatas = chche;
+            showDatas = friends;
         } else {//
             String str = voiceSearchView.getText().toString();
             upDataBySearch(str);
@@ -412,16 +385,6 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
     }
 
 
-    private List<EmployeesEntity> getEmListByDB() throws Exception {
-        DBManager manager = new DBManager();
-        String master = CommonUtil.getMaster();
-        List<EmployeesEntity> emList = null;
-        if (!StringUtil.isEmpty(master)) {
-            emList = manager.select_getEmployee(new String[]{master}, "whichsys=?");
-        }
-        manager.closeDB();
-        return emList;
-    }
 
     /**
      * 将Rep转化为Friend对象
@@ -475,30 +438,7 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
     }
 
 
-    private void loadFriendsNet() {
-        CommonInterface.getInstance().loadCompanyData(new CommonInterface.OnResultListener() {
-            @Override
-            public void result(@NonNull boolean success, @NonNull int what, @Nullable String message) {
-                try {
-                    if (success) {
-                        boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
-                        JSONObject object = JSON.parseObject(message);
-                        List<BaseSortModel<Friend>> chche = null;
-                        if (isB2b) {
-                            chche = getFriendsByErpDB(CompanyHandlerInfoUtil.getEmployeesByB2b(object));
-                        } else {
-                            List<EmployeesEntity> entities = CompanyHandlerInfoUtil.getEmployeesByNet(object);
-                            chche = getFriendsByErpDB(entities);
-                        }
-                        if (!ListUtils.isEmpty(chche))
-                            loadDataInThread(chche);
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        });
-    }
+
 
     @Override
     public void onClick(View view) {
@@ -522,6 +462,22 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
             ct.startActivity(intent);
         }
     }
+
+    @Override
+    public void callback(List<EmployeesEntity> employees) {
+        try {
+            final List<BaseSortModel<Friend>> friends = getFriendsByErpDB(employees);
+            ThreadUtil.getInstance().addTask(new Runnable() {
+                @Override
+                public void run() {
+                    handlerData(friends);
+                }
+            });
+
+        } catch (Exception e) {
+            dimssLoading();
+        }
+    }
 }
 
 

+ 4 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/AdapterWrapper.java → app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/AdapterWrapper.java

@@ -1,7 +1,4 @@
-package com.xzjmyk.pm.activity.view.stickylistheaders;
-
-import java.util.LinkedList;
-import java.util.List;
+package com.uas.appcontact.ui.widget.stickylistheaders;
 
 import android.content.Context;
 import android.database.DataSetObserver;
@@ -13,6 +10,9 @@ import android.widget.BaseAdapter;
 import android.widget.Checkable;
 import android.widget.ListAdapter;
 
+import java.util.LinkedList;
+import java.util.List;
+
 
 /**
  * A {@link ListAdapter} which wraps a {@link StickyListHeadersAdapter} and

+ 1 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/CheckableWrapperView.java → app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/CheckableWrapperView.java

@@ -1,10 +1,9 @@
-package com.xzjmyk.pm.activity.view.stickylistheaders;
+package com.uas.appcontact.ui.widget.stickylistheaders;
 
 import android.content.Context;
 import android.widget.Checkable;
 
 
-
 /**
  * A WrapperView that implements the checkable interface
  * 

+ 1 - 1
app_core/common/src/main/java/com/core/widget/stickylistheaders/DistinctMultiHashMap.java → app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/DistinctMultiHashMap.java

@@ -1,4 +1,4 @@
-package com.core.widget.stickylistheaders;
+package com.uas.appcontact.ui.widget.stickylistheaders;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;

+ 1 - 1
app_core/common/src/main/java/com/core/widget/stickylistheaders/DualHashMap.java → app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/DualHashMap.java

@@ -1,4 +1,4 @@
-package com.core.widget.stickylistheaders;
+package com.uas.appcontact.ui.widget.stickylistheaders;
 
 import java.util.HashMap;
 

+ 1 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/ExpandableStickyListHeadersAdapter.java → app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/ExpandableStickyListHeadersAdapter.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.view.stickylistheaders;
+package com.uas.appcontact.ui.widget.stickylistheaders;
 
 import android.database.DataSetObserver;
 import android.view.View;
@@ -9,7 +9,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 
-
 /**
  * @author lsjwzh
  */

+ 1 - 1
app_core/common/src/main/java/com/core/widget/stickylistheaders/ExpandableStickyListHeadersListView.java → app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/ExpandableStickyListHeadersListView.java

@@ -1,4 +1,4 @@
-package com.core.widget.stickylistheaders;
+package com.uas.appcontact.ui.widget.stickylistheaders;
 
 import android.content.Context;
 import android.util.AttributeSet;

+ 1 - 1
app_core/common/src/main/java/com/core/widget/stickylistheaders/ListViewInScroller.java → app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/ListViewInScroller.java

@@ -1,4 +1,4 @@
-package com.core.widget.stickylistheaders;
+package com.uas.appcontact.ui.widget.stickylistheaders;
 
 import android.content.Context;
 import android.util.AttributeSet;

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/stickylistheaders/SectionIndexerAdapterWrapper.java → app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/SectionIndexerAdapterWrapper.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.view.stickylistheaders;
+package com.uas.appcontact.ui.widget.stickylistheaders;
 
 import android.content.Context;
 import android.widget.SectionIndexer;

+ 1 - 1
app_core/common/src/main/java/com/core/widget/stickylistheaders/StickyListHeadersAdapter.java → app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/StickyListHeadersAdapter.java

@@ -1,4 +1,4 @@
-package com.core.widget.stickylistheaders;
+package com.uas.appcontact.ui.widget.stickylistheaders;
 
 import android.view.View;
 import android.view.ViewGroup;

+ 1 - 1
app_core/common/src/main/java/com/core/widget/stickylistheaders/StickyListHeadersListView.java → app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/StickyListHeadersListView.java

@@ -1,4 +1,4 @@
-package com.core.widget.stickylistheaders;
+package com.uas.appcontact.ui.widget.stickylistheaders;
 
 import android.annotation.SuppressLint;
 import android.annotation.TargetApi;

+ 1 - 1
app_core/common/src/main/java/com/core/widget/stickylistheaders/WrapperView.java → app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/WrapperView.java

@@ -1,4 +1,4 @@
-package com.core.widget.stickylistheaders;
+package com.uas.appcontact.ui.widget.stickylistheaders;
 
 import android.content.Context;
 import android.graphics.Canvas;

+ 1 - 1
app_core/common/src/main/java/com/core/widget/stickylistheaders/WrapperViewList.java → app_modular/appcontact/src/main/java/com/uas/appcontact/ui/widget/stickylistheaders/WrapperViewList.java

@@ -1,4 +1,4 @@
-package com.core.widget.stickylistheaders;
+package com.uas.appcontact.ui.widget.stickylistheaders;
 
 import android.content.Context;
 import android.graphics.Canvas;

+ 1 - 1
app_modular/appme/src/main/java/com/me/appme/other/activity/BasicInfoActivity.java

@@ -71,7 +71,7 @@ import com.core.xmpp.utils.CardcastUiUpdateUtil;
 import com.me.appme.R;
 import com.uas.appcontact.db.ContactsDao;
 import com.uas.appcontact.model.contacts.ContactsModel;
-import com.uas.appcontact.ui.activity.ChatActivity;
+import com.xzjmyk.pm.activity.ui.message.ChatActivity;
 
 import java.util.HashMap;
 import java.util.Map;

Some files were not shown because too many files changed in this diff