Browse Source

no message

Fenix Wang 8 years ago
parent
commit
d6fd707db8
46 changed files with 1046 additions and 147 deletions
  1. 4 0
      app/AndroidManifest.xml
  2. 2 2
      app/build.gradle
  3. 3 4
      app/res/drawable/align_bottom_green_btn_selector.xml
  4. 21 0
      app/res/layout/activity_request.xml
  5. 93 51
      app/res/layout/circle_details.xml
  6. 11 0
      app/res/layout/content_request.xml
  7. 6 4
      app/res/layout/item_add_photos_layout.xml
  8. 2 1
      app/res/layout/item_mine_nearby_people.xml
  9. 1 1
      app/res/layout/mine_fragment.xml
  10. 73 0
      app/res/layout/request_item.xml
  11. 0 0
      app/res/values/strings.xml
  12. 18 0
      app/src/com/sheishuo/app/common/beans/RequestBean.java
  13. 8 1
      app/src/com/sheishuo/app/common/util/net/INet.java
  14. 117 1
      app/src/com/sheishuo/app/common/util/net/NetImpl.java
  15. 5 0
      app/src/com/sheishuo/app/common/util/net/NetInfo.java
  16. 11 7
      app/src/com/sheishuo/app/common/views/GridViewAdapter.java
  17. 4 1
      app/src/com/sheishuo/app/core_module/circle/activity/CircleDetailsActivity.java
  18. 1 1
      app/src/com/sheishuo/app/core_module/friends/activity/AddNewFriendActivity.java
  19. 7 3
      app/src/com/sheishuo/app/core_module/friends/activity/ContactsListActivity.java
  20. 55 18
      app/src/com/sheishuo/app/core_module/friends/activity/PhoneContactsActivity.java
  21. 12 1
      app/src/com/sheishuo/app/core_module/mine/view/adapter/NearbyPeopleAdapter.java
  22. 12 0
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/AboutActivity.java
  23. 39 0
      app/src/com/sheishuo/app/core_module/mine/view/ui/activity/PersonalSettingsActivity.java
  24. 30 1
      app/src/com/sheishuo/app/core_module/sheishuo/view/ui/CreateNewGroupActivity.java
  25. 77 19
      app/src/com/sheishuo/app/core_module/sheishuo/view/ui/TeamSettingsActivity.java
  26. 3 1
      app/src/com/sheishuo/app/core_module/trade/view/adapter/TradeItemAdapter.java
  27. 5 1
      app/src/com/sheishuo/app/impl/SheishuoTeamMessageActivity.java
  28. 1 0
      app/src/com/sheishuo/app/impl/SheishuoUIKit.java
  29. 1 8
      app/src/com/sheishuo/app/login/LoginActivity.java
  30. 15 0
      app/src/com/sheishuo/app/login/helper/LoginHelper.java
  31. 199 0
      app/src/com/sheishuo/app/main/activity/RequestActivity.java
  32. 2 2
      app/src/com/sheishuo/app/main/activity/SystemMessageActivity.java
  33. 1 1
      app/src/com/sheishuo/app/main/adapter/AreaGroupsAdapter.java
  34. 7 4
      app/src/com/sheishuo/app/main/adapter/CircleListAdapter.java
  35. 147 0
      app/src/com/sheishuo/app/main/adapter/RequestAdapter.java
  36. 12 0
      app/src/com/sheishuo/app/main/adapter/RequestItemClickListener.java
  37. 8 2
      app/src/com/sheishuo/app/main/fragment/AreaGroupsFragment.java
  38. 5 0
      app/src/com/sheishuo/app/main/fragment/HomeFragment.java
  39. 2 2
      app/src/com/sheishuo/app/main/fragment/MineFragment.java
  40. 1 1
      app/src/com/sheishuo/app/main/fragment/SessionListFragment.java
  41. 9 0
      uikit/res/drawable-hdpi/location_btn_bg.xml
  42. 2 0
      uikit/src/com/netease/nim/uikit/contact/core/item/ItemTypes.java
  43. 2 0
      uikit/src/com/netease/nim/uikit/contact/core/provider/ContactDataProvider.java
  44. 4 0
      uikit/src/com/netease/nim/uikit/contact/core/provider/TeamDataProvider.java
  45. 1 1
      uikit/src/com/netease/nim/uikit/contact/core/viewholder/ContactHolder.java
  46. 7 8
      uikit/uikit.iml

+ 4 - 0
app/AndroidManifest.xml

@@ -618,6 +618,10 @@
                 android:name="android.support.PARENT_ACTIVITY"
                 android:value="com.netease.nim.uikit.team.activity.AdvancedTeamMemberActivity" />
         </activity>
+        <activity
+            android:name=".main.activity.RequestActivity"
+            android:label="@string/title_activity_request"
+            android:theme="@style/AppTheme.NoActionBar"></activity>
     </application>
 
 </manifest>

+ 2 - 2
app/build.gradle

@@ -116,6 +116,8 @@ dependencies {
     //debugCompile project(':plugins:sf')
     //CardView
     compile files('libs/alipaySdk-20170710.jar')
+
+
     compile 'com.netease.nimlib:jsbridge:1.3.1'
     compile 'com.android.support:multidex:1.0.1'
     compile 'com.android.support:support-annotations:25.3.1'
@@ -127,9 +129,7 @@ dependencies {
     compile 'com.squareup.retrofit2:converter-gson:2.3.0'
     compile 'com.android.support:cardview-v7:25.1.1'
     compile 'com.android.support.constraint:constraint-layout:1.0.2'
-
     compile 'com.tencent.bugly:crashreport:latest.release'
     compile 'com.tencent.bugly:nativecrashreport:latest.release'
-
     compile 'com.contrarywind:Android-PickerView:3.2.5'
 }

+ 3 - 4
app/res/drawable/align_bottom_green_btn_selector.xml

@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <item android:drawable="@color/color_green_disable" android:state_pressed="true"></item>
-    <item android:drawable="@color/color_green_disable" android:state_enabled="false"></item>
-    <item android:drawable="@color/color_green_00d3a9"></item>
-
+    <item android:state_pressed="true" android:drawable="@color/color_green_disable" />
+    <item android:state_enabled="false" android:drawable="@color/color_green_disable" />
+    <item android:drawable="@color/color_green_00d3a9" />
 </selector>

+ 21 - 0
app/res/layout/activity_request.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    tools:context="com.sheishuo.app.main.activity.RequestActivity">
+
+    <com.sheishuo.app.common.views.BaseToolbar
+        android:id="@+id/toolbar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        style="@style/fullToolbarStyle"/>
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/request_list_layout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
+</LinearLayout>

+ 93 - 51
app/res/layout/circle_details.xml

@@ -92,65 +92,107 @@
                 android:background="@color/color_background"
                 android:orientation="vertical">
                 <!--浏览量,喜欢,评论计数-->
-                <LinearLayout
+                <RelativeLayout
                     android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:background="@color/white"
-                    android:gravity="end"
-                    android:orientation="horizontal"
-                    android:padding="8dp">
-
-                    <ImageView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:visibility="gone"
-                        android:src="@drawable/circle_eye" />
-
-                    <TextView
-                        android:id="@+id/circle_details_read_num"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="123"
-                        android:visibility="gone"
-                        android:textColor="@color/grey_light" />
-
-                    <TextView
-                        android:id="@+id/circle_details_delete"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginRight="10dp"
-                        android:text="删除"
-                        android:textColor="@color/grey_light" />
+                    android:layout_height="wrap_content">
 
-                    <ImageView
-                        android:id="@+id/circle_details_like_icon"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:src="@drawable/circle_likes" />
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:background="@color/white"
+                        android:gravity="end"
+                        android:orientation="horizontal"
+                        android:padding="8dp">
+
+                        <ImageView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:src="@drawable/circle_eye"
+                            android:visibility="gone" />
+
+                        <TextView
+                            android:id="@+id/circle_details_read_num"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="123"
+                            android:textColor="@color/grey_light"
+                            android:visibility="gone" />
+
+                        <TextView
+                            android:id="@+id/circle_details_delete"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginRight="10dp"
+                            android:text="删除"
+                            android:textColor="@color/grey_light" />
+
+                        <ImageView
+                            android:id="@+id/circle_details_like_icon"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:src="@drawable/circle_likes" />
+
+                        <TextView
+                            android:id="@+id/circle_details_like_num"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginRight="10dp"
+                            android:text="123"
+                            android:textColor="@color/grey_light" />
+
+                        <ImageView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:src="@drawable/circle_comments" />
+
+                        <TextView
+                            android:id="@+id/circle_details_comment_num"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="评论"
+                            android:textColor="@color/grey_light" />
 
-                    <TextView
-                        android:id="@+id/circle_details_like_num"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginRight="10dp"
-                        android:text="123"
-                        android:textColor="@color/grey_light" />
 
-                    <ImageView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:src="@drawable/circle_comments" />
+                    </LinearLayout>
 
-                    <TextView
-                        android:id="@+id/circle_details_comment_num"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="评论"
-                        android:textColor="@color/grey_light" />
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:orientation="horizontal"
+                        android:paddingBottom="8dp"
+                        android:paddingLeft="8dp"
+                        android:paddingTop="8dp">
+
+                        <LinearLayout
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:background="@drawable/location_btn_bg"
+                            android:gravity="center"
+                            android:orientation="horizontal"
+                            android:paddingBottom="2dp"
+                            android:paddingLeft="5dp"
+                            android:paddingRight="5dp"
+                            android:paddingTop="2dp">
+
+                            <ImageView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_marginRight="2dp"
+                                app:srcCompat="@drawable/location" />
+
+                            <TextView
+                                android:id="@+id/circle_details_local"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="重庆北碚区"
+                                android:textColor="@color/grey_light" />
+                        </LinearLayout>
+                    </LinearLayout>
 
+                </RelativeLayout>
 
-                </LinearLayout>
                 <!--点赞用户头像-->
+
                 <LinearLayout
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"

+ 11 - 0
app/res/layout/content_request.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    app:layout_behavior="@string/appbar_scrolling_view_behavior"
+    tools:context="com.sheishuo.app.main.activity.RequestActivity"
+    tools:showIn="@layout/activity_request">
+
+</android.support.constraint.ConstraintLayout>

+ 6 - 4
app/res/layout/item_add_photos_layout.xml

@@ -1,12 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical" android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center"
+    android:orientation="vertical">
 
 
     <LinearLayout
-        android:layout_width="96dp"
-        android:layout_height="96dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
         android:gravity="center"
         android:orientation="vertical">
 

+ 2 - 1
app/res/layout/item_mine_nearby_people.xml

@@ -26,6 +26,7 @@
         android:layout_height="wrap_content"
         android:layout_marginLeft="9dp"
         android:text="用户名12324214"
+        android:textColor="@color/black"
         app:layout_constraintLeft_toRightOf="@+id/item_mine_neaby_people_avatar"
         app:layout_constraintTop_toTopOf="@+id/item_mine_neaby_people_avatar" />
 
@@ -42,7 +43,7 @@
             android:layout_marginRight="8dp"
             android:layout_marginTop="8dp"
             android:text="距离"
-            android:textColor="@color/grey_light_light"
+            android:textColor="@color/grey"
             app:layout_constraintRight_toRightOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
     </LinearLayout>

+ 1 - 1
app/res/layout/mine_fragment.xml

@@ -104,7 +104,7 @@
                 android:id="@+id/mine_fragment_photos_layout"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:columnCount="4"/>
+                android:columnCount="5" />
 
 
             <TextView

+ 73 - 0
app/res/layout/request_item.xml

@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/touch_bg"
+    android:clickable="true"
+    android:orientation="vertical"
+    android:id="@+id/request_item">
+
+    <View
+        android:id="@+id/top_line"
+        style="@style/horizontal_light_thin_divider" />
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="10dp">
+
+        <com.netease.nim.uikit.common.ui.imageview.HeadImageView
+            android:id="@+id/request_item_avatar"
+            android:layout_width="48dp"
+            android:layout_height="48dp"
+            android:src="@drawable/nim_avatar_default" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="48dp"
+            android:layout_marginLeft="58dp"
+            android:layout_marginRight="70dp"
+            android:gravity="center_vertical"
+            android:orientation="vertical">
+
+            <TextView
+                android:id="@+id/request_item_name"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="Name"
+                android:textColor="@color/black" />
+
+            <TextView
+                android:id="@+id/request_item_msg"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="some message"
+                android:textColor="@color/color_black_ff666666" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="48dp"
+            android:gravity="right|center_vertical"
+            android:orientation="horizontal">
+
+            <Button
+                android:id="@+id/request_item_accept_btn"
+                android:layout_width="60dp"
+                android:layout_height="36dp"
+                android:background="@drawable/nim_team_create_btn_selector"
+                android:text="接受"
+                android:longClickable="true"
+                android:textColor="@color/white" />
+        </LinearLayout>
+
+    </RelativeLayout>
+
+
+    <View
+        android:id="@+id/bottom_line"
+        style="@style/horizontal_light_thin_divider" />
+
+</LinearLayout>

File diff suppressed because it is too large
+ 0 - 0
app/res/values/strings.xml


+ 18 - 0
app/src/com/sheishuo/app/common/beans/RequestBean.java

@@ -35,6 +35,8 @@ public class RequestBean implements Serializable{
         private String target_id;
         private String msg;
         private String state;
+        private String type;
+        private String extra_id;
         private String inputtime;
 
         public String getId() {
@@ -84,5 +86,21 @@ public class RequestBean implements Serializable{
         public void setInputtime(String inputtime) {
             this.inputtime = inputtime;
         }
+
+        public String getType() {
+            return type;
+        }
+
+        public void setType(String type) {
+            this.type = type;
+        }
+
+        public String getExtra_id() {
+            return extra_id;
+        }
+
+        public void setExtra_id(String extra_id) {
+            this.extra_id = extra_id;
+        }
     }
 }

+ 8 - 1
app/src/com/sheishuo/app/common/util/net/INet.java

@@ -5,6 +5,8 @@ import android.support.annotation.Nullable;
 
 import com.sheishuo.app.common.beans.SocialInfoBean;
 
+import java.util.List;
+
 import okhttp3.FormBody;
 import okhttp3.MediaType;
 import okhttp3.RequestBody;
@@ -28,7 +30,8 @@ public interface INet {
     void uploadImgs(String filePath, ResponseCallback callback);
     void uploadSocialPhoto(String filePath,ResponseCallback callback);
     void deleteSocialPhoto(String id, ResponseCallback callback);
-    void getSocialInfo(String targetID,ResponseCallback callback);
+    void getSocialInfo(String targetID, ResponseCallback callback);
+    void searchInfo(String targetId, ResponseCallback callback);
     void getSocialComment(String id, int page, ResponseCallback callback);
     void socialLike(String id, ResponseCallback callback);
     void deleteSocial(String id, ResponseCallback callback);
@@ -50,6 +53,9 @@ public interface INet {
     void submitComplaint(String targetId,String type,String reason);
     void alipay(String money,ResponseCallback callback);
 
+    //chat
+    void teamSync(String teamId, String teamName, ResponseCallback callback);
+
     //account
     void loginQuery(String mobile,String pwd,ResponseCallback callback);
     void forgetPassword(String mobile, String code, String pwd, ResponseCallback callback);
@@ -63,6 +69,7 @@ public interface INet {
     void befollowedList(ResponseCallback callback);
 
     //friend request
+    void teamInvite(String teamId, List<String> userIds, String msg, ResponseCallback callback);
     void requestList(ResponseCallback callback);
     void requestDelete(String requestId, ResponseCallback callback);
     void addFriend(String requestId,  ResponseCallback callback);

+ 117 - 1
app/src/com/sheishuo/app/common/util/net/NetImpl.java

@@ -3,6 +3,7 @@ package com.sheishuo.app.common.util.net;
 import android.graphics.Bitmap;
 import android.os.Handler;
 import android.support.annotation.Nullable;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 
@@ -722,6 +723,52 @@ public class NetImpl implements INet {
         }).start();
     }
 
+    @Override
+    public void searchInfo(final String targetID, final ResponseCallback callback) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                FormBody body = new FormBody.Builder()
+                        .add("user_id", AccountCache.getAccount().getId())
+                        .add("target_id", targetID)
+                        .add("search", "1")
+                        .build();
+                Request request = new Request.Builder()
+                        .url(NetInfo.GET_SOCIAL_INFO)
+                        .post(body)
+                        .build();
+                try {
+                    Response response = client.newCall(request).execute();
+                    if (200 == response.code()) {
+
+                        String result = response.body().string();
+                        try {
+                            String jsonStr = new JSONObject(result).getJSONObject("d").toString();
+                            Log.e("jsonStr",jsonStr);
+                            SocialInfoBean bean = new Gson().fromJson(jsonStr, SocialInfoBean.class);
+                            //更新缓存
+                            SocialInfoCache.put(bean.getId(),bean);
+
+                            callback.onSuccess(bean);
+
+                        } catch (JSONException e) {
+                            e.printStackTrace();
+                            callback.onFailed(null);
+                        }
+
+
+
+                    } else {
+                        callback.onFailed(null);
+                    }
+                } catch (IOException e) {
+                    e.printStackTrace();
+                    callback.onFailed(null);
+                }
+            }
+        }).start();
+    }
+
 
     @Override
     public void socialLike(final String id, final ResponseCallback callback) {
@@ -1508,7 +1555,7 @@ public class NetImpl implements INet {
                 try{
                     //后四位
                     String msg = phoneNum.substring(phoneNum.length() - 4 , phoneNum.length());
-                    Log.e("msg",msg);
+                    Log.e("msg", msg);
                     FormBody body = new FormBody.Builder()
                             .add("mobile",phoneNum)
                             .add("msg",msg)
@@ -1587,6 +1634,75 @@ public class NetImpl implements INet {
         }).start();
     }
 
+    @Override
+    public void teamSync(final String teamId, final String teamName, final ResponseCallback callback) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try{
+                    FormBody body = new FormBody.Builder()
+                            .add("id", teamId)
+                            .add("name", teamName)
+                            .add("latitude", AccountCache.getAccount().getLatitude())
+                            .add("longitude", AccountCache.getAccount().getLongitude())
+                            .build();
+
+                    Request request = new Request.Builder()
+                            .post(body)
+                            .url(TEAM_INVITE)
+                            .build();
+
+                    Response response = client.newCall(request).execute();
+                    if (200 == response.code()){
+                        callback.onSuccess(null);
+                    }else {
+                        callback.onFailed(null);
+                    }
+
+                }catch (Exception e){
+                    e.printStackTrace();
+                    callback.onFailed(null);
+                }
+            }
+        }).start();
+    }
+
+    @Override
+    public void teamInvite(final String teamId, final List<String> userIds, final String msg, final ResponseCallback callback) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try{
+                    String ids = TextUtils.join(",", userIds.toArray(new String[0]));
+
+                    Log.d("teamInvite", "msg : "+msg+"   ids : "+ids);
+                    FormBody body = new FormBody.Builder()
+                            .add("user_id", AccountCache.getAccount().getId())
+                            .add("target_id", ids)
+                            .add("msg", msg)
+                            .add("type", "1")
+                            .add("team_id", teamId)
+                            .build();
+
+                    Request request = new Request.Builder()
+                            .post(body)
+                            .url(TEAM_INVITE)
+                            .build();
+
+                    Response response = client.newCall(request).execute();
+                    if (200 == response.code()){
+                        callback.onSuccess(null);
+                    }else {
+                        callback.onFailed(null);
+                    }
+
+                }catch (Exception e){
+                    e.printStackTrace();
+                    callback.onFailed(null);
+                }
+            }
+        }).start();
+    }
 
     @Override
     public void requestList(final ResponseCallback callback) {

+ 5 - 0
app/src/com/sheishuo/app/common/util/net/NetInfo.java

@@ -35,6 +35,11 @@ public class NetInfo {
     public final static String TRADE_SEARCH = INDEX + "?m=who&c=trade&a=search";
     public final static String CIRCLE_COMMENT = INDEX + "?m=who&c=social&a=comment";
     public final static String UPDATE_BANNER = INDEX + "?m=who&c=social&a=banner_upload";
+
+    //chat
+    public final static String TEAM_SYNC = INDEX + "?m=who&c=index&a=sync_chatroom";
+
+    public final static String TEAM_INVITE = INDEX + "?m=who&c=social&a=team_invite";
     public final static String REQUEST_LIST = INDEX + "?m=who&c=social&a=request_list";
     public final static String REQUEST_DELETE = INDEX + "?m=who&c=social&a=delete_request";
     public final static String ADD_FRIEND = INDEX + "?m=who&c=social&a=add_friend";

+ 11 - 7
app/src/com/sheishuo/app/common/views/GridViewAdapter.java

@@ -5,6 +5,7 @@ import android.database.DataSetObserver;
 import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.GridLayout;
 import android.widget.ImageView;
 import android.widget.ListAdapter;
 
@@ -24,6 +25,7 @@ public class GridViewAdapter implements ListAdapter {
     List<String> thumbs,pics;
     Context context;
 
+    public int imgSizeBlank = 0;
 
     public  GridViewAdapter(Context context, List<String> thumbs, List<String> pics) {
         this.thumbs = thumbs;
@@ -74,13 +76,15 @@ public class GridViewAdapter implements ListAdapter {
     @Override
     public View getView(final int position, View convertView, ViewGroup parent) {
         ImageView imageView = ImgUtil.getImageFromNet(context,thumbs.get(position));
-        if (getCount() >= 5){
-            imageView.setMinimumHeight((int) ImgUtil.convertDpToPixel(96,SheishuoApplication.getContext()));
-            imageView.setMinimumWidth((int) ImgUtil.convertDpToPixel(96,SheishuoApplication.getContext()));
-        }else {
-            imageView.setMinimumHeight((int) ImgUtil.convertDpToPixel(128,SheishuoApplication.getContext()));
-            imageView.setMinimumWidth((int) ImgUtil.convertDpToPixel(128,SheishuoApplication.getContext()));
-        }
+//        if (getCount() >= 5){
+        int imgSize = (parent.getMeasuredWidth() - imgSizeBlank)/3;
+            imageView.setMinimumHeight(imgSize);
+            imageView.setMinimumWidth(imgSize);
+//        }
+//        else {
+//            imageView.setMinimumHeight((int) ImgUtil.convertDpToPixel(128,SheishuoApplication.getContext()));
+//            imageView.setMinimumWidth((int) ImgUtil.convertDpToPixel(128,SheishuoApplication.getContext()));
+//        }
 
         imageView.setOnClickListener(new View.OnClickListener() {
             @Override

+ 4 - 1
app/src/com/sheishuo/app/core_module/circle/activity/CircleDetailsActivity.java

@@ -58,7 +58,7 @@ public class CircleDetailsActivity extends SheishuoUI {
 
     private GridLayout imgGridView;
 
-    private TextView nameTV,dateTV,readNumTV,likedNumTV,commentTV, likedNum2TV, deleteTV;
+    private TextView nameTV,dateTV,readNumTV,likedNumTV,commentTV, likedNum2TV, deleteTV, locationTV;
 
     private ImageView likedIcon;
 
@@ -97,6 +97,7 @@ public class CircleDetailsActivity extends SheishuoUI {
         likedNum2TV = findView(R.id.circle_details_like_num2);
         commentTV = findView(R.id.circle_details_comment_num);
         contentTV = findView(R.id.circle_details_content);
+        locationTV = findView(R.id.circle_details_local);
 
         imgGridView = findView(R.id.circle_details_imgs_grid);
 
@@ -219,6 +220,8 @@ public class CircleDetailsActivity extends SheishuoUI {
             imgGridView.addView(imageView);
         }
 
+        locationTV.setText(bean.getLocal());
+
         likedNumTV.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {

+ 1 - 1
app/src/com/sheishuo/app/core_module/friends/activity/AddNewFriendActivity.java

@@ -64,7 +64,7 @@ public class AddNewFriendActivity extends SheishuoUI {
                 if (idOrTelTV.getText().toString().trim().isEmpty()){
                     showToast("请填写用户ID或者手机号");
                 }else {
-                    net.getSocialInfo(idOrTelTV.getText().toString(), new ResponseCallback() {
+                    net.searchInfo(idOrTelTV.getText().toString(), new ResponseCallback() {
                         @Override
                         public void onSuccess(Object object) {
                             SocialInfoBean bean = (SocialInfoBean) object;

+ 7 - 3
app/src/com/sheishuo/app/core_module/friends/activity/ContactsListActivity.java

@@ -34,6 +34,7 @@ import com.sheishuo.app.common.util.net.ResponseCallback;
 import com.sheishuo.app.common.views.BaseToolbar;
 import com.sheishuo.app.contact.activity.BlackListActivity;
 import com.sheishuo.app.core_module.friends.fragment.FollowListFragment;
+import com.sheishuo.app.main.activity.RequestActivity;
 import com.sheishuo.app.main.activity.RobotListActivity;
 import com.sheishuo.app.main.activity.SystemMessageActivity;
 import com.sheishuo.app.main.activity.TeamListActivity;
@@ -188,7 +189,8 @@ public class ContactsListActivity extends SheishuoUI {
                     image.setScaleType(ImageView.ScaleType.FIT_XY);
                     if(ContactsListActivity.requestBean != null)
                     {
-                        int count = NIMClient.getService(SystemMessageService.class).querySystemMessageUnreadCountBlock() + ContactsListActivity.requestBean.getD().size();
+                        //int count = NIMClient.getService(SystemMessageService.class).querySystemMessageUnreadCountBlock() + ContactsListActivity.requestBean.getD().size();
+                        int count = ContactsListActivity.requestBean.getD().size();
                         updateUnreadNum(count);
                     }
                 }
@@ -249,7 +251,8 @@ public class ContactsListActivity extends SheishuoUI {
 
         static void handle(Context context, AbsContactItem item) {
             if (item == VERIFY) {
-                SystemMessageActivity.start(context);
+                //SystemMessageActivity.start(context);
+                context.startActivity(new Intent(context, RequestActivity.class));
             } else if (item == BEFOLLOWED){
                 context.startActivity(new Intent(context, BeFollowedActivity.class));
             } else if (item == ROBOT) {
@@ -257,7 +260,8 @@ public class ContactsListActivity extends SheishuoUI {
             } else if (item == NORMAL_TEAM) {
                 TeamListActivity.start(context, ItemTypes.TEAMS.NORMAL_TEAM);
             } else if (item == ADVANCED_TEAM) {
-                TeamListActivity.start(context, ItemTypes.TEAMS.ADVANCED_TEAM);
+                //TeamListActivity.start(context, ItemTypes.TEAMS.ADVANCED_TEAM);
+                TeamListActivity.start(context, ItemTypes.TEAMS.CUST_TEAM);
             } else if (item == MY_COMPUTER) {
                 SessionHelper.startP2PSession(context, AccountCache.getAccount().getId());
             } else if (item == BLACK_LIST) {

+ 55 - 18
app/src/com/sheishuo/app/core_module/friends/activity/PhoneContactsActivity.java

@@ -2,6 +2,7 @@ package com.sheishuo.app.core_module.friends.activity;
 
 import android.content.ContentResolver;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.database.Cursor;
 import android.os.Bundle;
@@ -9,13 +10,17 @@ import android.provider.ContactsContract;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.text.Editable;
+import android.text.InputType;
+import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.util.Log;
 import android.view.View;
+import android.view.WindowManager;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.LinearLayout;
 
+import com.netease.nim.uikit.common.ui.dialog.EasyEditDialog;
 import com.netease.nimlib.sdk.NIMClient;
 import com.netease.nimlib.sdk.RequestCallback;
 import com.netease.nimlib.sdk.friend.FriendService;
@@ -172,34 +177,66 @@ public class PhoneContactsActivity extends SheishuoUI {
                 adapter.addAll(list);
                 adapter.setOnAddFriendListenner(new PhoneContactItemAdapter.AddFriendButtonClickListener() {
                     @Override
-                    public void onClick(View view) {
-                        String str = (String) view.getTag();
+                    public void onClick(final View view) {
+                        final String str = (String) view.getTag();
                         if (str.length() < 11){
 
                             //以ID添加好友
-                            net.sendAddFriendRequest((String) view.getTag(),"请求添加好友");
-                            showToast(context,"成功发送好友申请");
-                            view.setEnabled(false);
-                            ((Button)view).setText("已发送");
-                            //Temp
-                            Log.e(TAG,(String) view.getTag());
-                            AddFriendData addFriendData = new AddFriendData((String) view.getTag(), VerifyType.VERIFY_REQUEST,"请求添加好友");
-                            NIMClient.getService(FriendService.class).addFriend(addFriendData).setCallback(new RequestCallback<Void>() {
+                            final EasyEditDialog requestDialog = new EasyEditDialog(context);
+                            requestDialog.setEditTextMaxLength(200);
+                            requestDialog.setTitle("请求添加好友");
+                            requestDialog.setInputType(InputType.TYPE_CLASS_TEXT);
+                            requestDialog.addNegativeButtonListener(R.string.cancel, new View.OnClickListener() {
                                 @Override
-                                public void onSuccess(Void aVoid) {
-                                    Log.e(TAG,"onSuccess");
+                                public void onClick(View v) {
+                                    requestDialog.dismiss();
+                                    PhoneContactsActivity.this.getWindow().setSoftInputMode(
+                                            WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
                                 }
-
+                            });
+                            requestDialog.addPositiveButtonListener(R.string.send, new View.OnClickListener() {
                                 @Override
-                                public void onFailed(int i) {
-                                    Log.e(TAG,"onFailed");
+                                public void onClick(View v) {
+                                    requestDialog.dismiss();
+                                    String content = requestDialog.getEditMessage();
+                                    if (!TextUtils.isEmpty(content)) {
+                                        net.sendAddFriendRequest(str, content);
+                                        showToast(context,"成功发送好友申请");
+                                        view.setEnabled(false);
+                                        ((Button)view).setText("已发送");
+                                    }
+                                    PhoneContactsActivity.this.getWindow().setSoftInputMode(
+                                            WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
                                 }
-
+                            });
+                            requestDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                                 @Override
-                                public void onException(Throwable throwable) {
-                                    throwable.printStackTrace();
+                                public void onCancel(DialogInterface dialog) {
                                 }
                             });
+                            requestDialog.show();
+
+
+
+                            //Temp
+//                            Log.e(TAG,(String) view.getTag());
+//                            AddFriendData addFriendData = new AddFriendData((String) view.getTag(), VerifyType.VERIFY_REQUEST, "请求添加好友");
+//                            NIMClient.getService(FriendService.class).addFriend(addFriendData).setCallback(new RequestCallback<Void>() {
+//                                @Override
+//                                public void onSuccess(Void aVoid) {
+//                                    Log.e(TAG,"onSuccess");
+//                                }
+//
+//                                @Override
+//                                public void onFailed(int i) {
+//                                    Log.e(TAG,"onFailed");
+//                                }
+//
+//                                @Override
+//                                public void onException(Throwable throwable) {
+//                                    throwable.printStackTrace();
+//                                }
+//                            });
                         }else {
                             //以手机号发送邀请短信
                             net.sendInviteMsg(str);

+ 12 - 1
app/src/com/sheishuo/app/core_module/mine/view/adapter/NearbyPeopleAdapter.java

@@ -18,6 +18,7 @@ import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.R;
 import com.sheishuo.app.core_module.mine.view.ui.activity.UserInfoDetailActivity;
 
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -47,7 +48,17 @@ public class NearbyPeopleAdapter extends RecyclerView.Adapter<NearbyPeopleAdapte
         holder.avatar.loadBuddyAvatar(people.getId());
         holder.name.setText(getName(people.getId()));
 
-        holder.distance.setText("相距" + people.getDist() + "米");
+        int distance = Integer.parseInt(people.getDist());
+        if(distance >= 1000)
+        {
+            DecimalFormat df = new DecimalFormat("###.#");
+            float f = (float)distance/1000f;
+            holder.distance.setText("" + df.format(f) + "KM");
+        }
+        else
+        {
+            holder.distance.setText("" + distance + "M");
+        }
 
         holder.itemView.setOnClickListener(new View.OnClickListener() {
             @Override

+ 12 - 0
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/AboutActivity.java

@@ -2,6 +2,8 @@ package com.sheishuo.app.core_module.mine.view.ui.activity;
 
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.view.View;
 import android.webkit.WebView;
@@ -51,6 +53,16 @@ public class AboutActivity extends SheishuoUI {
             }
         });
 
+        PackageManager pm = context.getPackageManager();
+        PackageInfo pi = null; //pm.getPackageInfo(context.getPackageName(), 0);
+        try {
+            pi = pm.getPackageInfo(context.getPackageName(), 0);
+            versionTV.setText(pi.versionName+"   build "+pi.versionCode);
+        } catch (PackageManager.NameNotFoundException e) {
+            e.printStackTrace();
+        }
+
+
         webView.loadUrl(NetInfo.ABOUT_URL);
 
         agreementTV.setOnClickListener(new View.OnClickListener() {

+ 39 - 0
app/src/com/sheishuo/app/core_module/mine/view/ui/activity/PersonalSettingsActivity.java

@@ -186,6 +186,12 @@ public class PersonalSettingsActivity extends SheishuoUI {
 
     private void initSettings() {
         bean = SocialInfoCache.get(AccountCache.getAccount().getId());
+        if(bean == null)
+        {
+            fetchSocialInfo();
+            return;
+        }
+
         NimUserInfo userInfo = NIMClient.getService(UserService.class)
                 .getUserInfo(AccountCache.getAccount().getId());
 
@@ -285,6 +291,9 @@ public class PersonalSettingsActivity extends SheishuoUI {
         realNameLayout.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                if (!bean.getReal_name().isEmpty()){
+                    return;
+                }
                 Intent intent = new Intent(context, SettingTextEditActivity.class);
                 intent.putExtra(SettingTextEditActivity.SETTING_CONTENT_TITLE, "修改真实姓名");
                 intent.putExtra(SettingTextEditActivity.SETTING_CONTENT, bean.getReal_name());
@@ -298,6 +307,9 @@ public class PersonalSettingsActivity extends SheishuoUI {
         idNumLayout.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                if (!bean.getId_number().isEmpty()){
+                    return;
+                }
                 Intent intent = new Intent(context, SettingTextEditActivity.class);
                 intent.putExtra(SettingTextEditActivity.SETTING_CONTENT_TITLE, "修改身份证号码");
                 intent.putExtra(SettingTextEditActivity.SETTING_CONTENT, bean.getId_number());
@@ -331,6 +343,29 @@ public class PersonalSettingsActivity extends SheishuoUI {
         });
     }
 
+
+    private void fetchSocialInfo()
+    {
+        new NetImpl().getSocialInfo(AccountCache.getAccount().getId(), new ResponseCallback() {
+            @Override
+            public void onSuccess(Object object) {
+                getHandler().post(new Runnable() {
+                    @Override
+                    public void run() {
+                        initSettings();
+                    }
+                });
+            }
+
+            @Override
+            public void onFailed(String error) {
+
+            }
+        });
+
+    }
+
+
     private void pickImage(int requestCode){
         PickImageHelper.PickImageOption option = new PickImageHelper.PickImageOption();
         option.multiSelectMaxCount = 1;
@@ -381,6 +416,10 @@ public class PersonalSettingsActivity extends SheishuoUI {
                 idNum = hideIdNum + idNum.substring(idNum.length() - 4,idNum.length());
                 idNumTV.setText(idNum);
             }
+            else
+            {
+                idNumTV.setText(idNum);
+            }
         }
         else
         {

+ 30 - 1
app/src/com/sheishuo/app/core_module/sheishuo/view/ui/CreateNewGroupActivity.java

@@ -27,6 +27,9 @@ import com.netease.nimlib.sdk.uinfo.UserService;
 import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.R;
 import com.sheishuo.app.common.util.img.ImgUtil;
+import com.sheishuo.app.common.util.net.INet;
+import com.sheishuo.app.common.util.net.NetImpl;
+import com.sheishuo.app.common.util.net.ResponseCallback;
 import com.sheishuo.app.common.views.BaseToolbar;
 import com.sheishuo.app.impl.SheishuoUI;
 import com.sheishuo.app.impl.SheishuoUIKit;
@@ -123,10 +126,33 @@ public class CreateNewGroupActivity extends SheishuoUI {
                 Map<TeamFieldEnum, Serializable> teamInfoMap = new HashMap<>();
                 teamInfoMap.put(TeamFieldEnum.Name, groupName);
                 teamInfoMap.put(TeamFieldEnum.Introduce, groupIntroduce);
-                teamService.createTeam(teamInfoMap, TeamTypeEnum.Advanced, "邀请您加入群", memberIds).setCallback(new RequestCallback<Team>() {
+                teamService.createTeam(teamInfoMap, TeamTypeEnum.Advanced, "邀请您加入群:"+groupName, memberIds).setCallback(new RequestCallback<Team>() {
                     @Override
                     public void onSuccess(Team team) {
                         showToast(context, "创建群组成功");
+                        INet net = new NetImpl();
+                        net.teamInvite(team.getId(), memberIds, "邀请您加入群:" + team.getName(), new ResponseCallback() {
+                            @Override
+                            public void onSuccess(Object object) {
+
+                            }
+
+                            @Override
+                            public void onFailed(String error) {
+
+                            }
+                        });
+                        net.teamSync(team.getId(), team.getName(), new ResponseCallback() {
+                            @Override
+                            public void onSuccess(Object object) {
+
+                            }
+
+                            @Override
+                            public void onFailed(String error) {
+
+                            }
+                        });
                         SheishuoUIKit.startTeamSession(context, team.getId());
                         finish();
                     }
@@ -142,6 +168,9 @@ public class CreateNewGroupActivity extends SheishuoUI {
                         showToast(context, "创建群组失败");
                     }
                 });
+
+
+
             }
         });
     }

+ 77 - 19
app/src/com/sheishuo/app/core_module/sheishuo/view/ui/TeamSettingsActivity.java

@@ -334,12 +334,46 @@ public class TeamSettingsActivity extends SheishuoUI implements View.OnClickList
             case R.id.team_settings_quit_btn:
                 if(team.getCreator().equals(AccountCache.getAccount().getId()))
                 {
-                    getTeamService().dismissTeam(teamRoomId);
+                    DialogMaker.showProgressDialog(context, "", false);
+                    getTeamService().dismissTeam(teamRoomId).setCallback(new RequestCallback<Void>() {
+                        @Override
+                        public void onSuccess(Void aVoid) {
+                            DialogMaker.dismissProgressDialog();
+                            finish();
+                        }
+
+                        @Override
+                        public void onFailed(int i) {
+
+                        }
+
+                        @Override
+                        public void onException(Throwable throwable) {
+
+                        }
+                    });
                 }
                 else {
-                    getTeamService().quitTeam(teamRoomId);
+                    DialogMaker.showProgressDialog(context, "", false);
+                    getTeamService().quitTeam(teamRoomId).setCallback(new RequestCallback<Void>() {
+                        @Override
+                        public void onSuccess(Void aVoid) {
+                            DialogMaker.dismissProgressDialog();
+                            finish();
+                        }
+
+                        @Override
+                        public void onFailed(int i) {
+
+                        }
+
+                        @Override
+                        public void onException(Throwable throwable) {
+
+                        }
+                    });
                 }
-                finish();
+
                 break;
             case R.id.team_settings_room_name_layout:
                 texteditIntent.putExtra(SettingTextEditActivity.SETTING_CONTENT_TITLE, "群聊名称");
@@ -567,28 +601,51 @@ public class TeamSettingsActivity extends SheishuoUI implements View.OnClickList
     }
 
 
-    private void inviteMembers(ArrayList<String> accounts) {
-        NIMClient.getService(TeamService.class).addMembers(team.getId(), accounts).setCallback(new RequestCallback<Void>() {
-            @Override
-            public void onSuccess(Void param) {
-                Toast.makeText(TeamSettingsActivity.this, "添加群成员成功", Toast.LENGTH_SHORT).show();
-            }
-
+    private void inviteMembers(ArrayList<String> accounts)
+    {
+        new NetImpl().teamInvite(team.getId(), accounts, "邀请您加入群:" + team.getName(), new ResponseCallback() {
             @Override
-            public void onFailed(int code) {
-                if (code == ResponseCode.RES_TEAM_INVITE_SUCCESS) {
-                    Toast.makeText(TeamSettingsActivity.this, com.netease.nim.uikit.R.string.team_invite_members_success, Toast.LENGTH_SHORT).show();
-                } else {
-                    Toast.makeText(TeamSettingsActivity.this, "invite members failed, code=" + code, Toast.LENGTH_SHORT).show();
-                    Log.e(TAG, "invite members failed, code=" + code);
-                }
+            public void onSuccess(Object object) {
+                getHandler().post(new Runnable() {
+                    @Override
+                    public void run() {
+                        Toast.makeText(TeamSettingsActivity.this, "邀请群成员成功", Toast.LENGTH_SHORT).show();
+                    }
+                });
             }
 
             @Override
-            public void onException(Throwable exception) {
-
+            public void onFailed(String error) {
+                getHandler().post(new Runnable() {
+                    @Override
+                    public void run() {
+                        Toast.makeText(TeamSettingsActivity.this, "邀请群成员失败", Toast.LENGTH_SHORT).show();
+                    }
+                });
             }
         });
+
+//        NIMClient.getService(TeamService.class).addMembers(team.getId(), accounts).setCallback(new RequestCallback<Void>() {
+//            @Override
+//            public void onSuccess(Void param) {
+//                Toast.makeText(TeamSettingsActivity.this, "添加群成员成功", Toast.LENGTH_SHORT).show();
+//            }
+//
+//            @Override
+//            public void onFailed(int code) {
+//                if (code == ResponseCode.RES_TEAM_INVITE_SUCCESS) {
+//                    Toast.makeText(TeamSettingsActivity.this, com.netease.nim.uikit.R.string.team_invite_members_success, Toast.LENGTH_SHORT).show();
+//                } else {
+//                    Toast.makeText(TeamSettingsActivity.this, "invite members failed, code=" + code, Toast.LENGTH_SHORT).show();
+//                    Log.e(TAG, "invite members failed, code=" + code);
+//                }
+//            }
+//
+//            @Override
+//            public void onException(Throwable exception) {
+//
+//            }
+//        });
     }
 
     //加载群成员资料和头像
@@ -609,6 +666,7 @@ public class TeamSettingsActivity extends SheishuoUI implements View.OnClickList
                         @Override
                         public void onClick(View v) {
                             ContactSelectActivity.Option option = TeamHelper.getContactSelectOption(memberIds);
+                            option.title = "邀请好友";
                             FollowSelectActivity.startActivityForResult(TeamSettingsActivity.this, option, REQUEST_CODE_CONTACT_SELECT);
                         }
                     });

+ 3 - 1
app/src/com/sheishuo/app/core_module/trade/view/adapter/TradeItemAdapter.java

@@ -11,6 +11,7 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
+import com.netease.nim.uikit.common.util.sys.ScreenUtil;
 import com.netease.nimlib.sdk.NIMClient;
 import com.netease.nimlib.sdk.RequestCallback;
 import com.netease.nimlib.sdk.uinfo.UserService;
@@ -187,11 +188,12 @@ public class TradeItemAdapter extends RecyclerView.Adapter<TradeItemAdapter.Trad
 
         //加载thumbs
         GridViewAdapter gridViewAdapter = new GridViewAdapter(context, bean.getThumbs(), bean.getPics());
+        gridViewAdapter.imgSizeBlank = ScreenUtil.dip2px(20);
         if (bean.getThumbs().size() > 4) {
             //默认为两列,如果超过4张图则显示为3列
             holder.imgGridView.setNumColumns(3);
         } else {
-            holder.imgGridView.setNumColumns(2);
+            holder.imgGridView.setNumColumns(3);
         }
         holder.imgGridView.setAdapter(gridViewAdapter);
 

+ 5 - 1
app/src/com/sheishuo/app/impl/SheishuoTeamMessageActivity.java

@@ -238,7 +238,7 @@ public class SheishuoTeamMessageActivity extends TeamMessageActivity {
      */
     protected void requestTeamInfo() {
         // 请求群基本信息
-        Team t = NIMClient.getService(TeamService.class).queryTeamBlock(sessionId);
+        final Team t = NIMClient.getService(TeamService.class).queryTeamBlock(sessionId);
         if (t != null) {
             TeamDataCache.getInstance().addOrUpdateTeam(t);
             updateTeamInfo(t);
@@ -286,6 +286,10 @@ public class SheishuoTeamMessageActivity extends TeamMessageActivity {
             }
         });
 
+        if(t != null && !t.isMyTeam())
+        {
+            finish();
+        }
     }
 
     protected void onRequestTeamInfoFailed() {

+ 1 - 0
app/src/com/sheishuo/app/impl/SheishuoUIKit.java

@@ -68,4 +68,5 @@ public class SheishuoUIKit extends NimUIKit {
             SheishuoTeamMessageActivity.start(context, id, customization, null, anchor);
         }
     }
+
 }

+ 1 - 8
app/src/com/sheishuo/app/login/LoginActivity.java

@@ -199,7 +199,7 @@ public class LoginActivity extends SheishuoUI implements View.OnClickListener{
         final String pwd = (String) SPHelper.getParam(context,"pwd","");
         if (!(mobile.isEmpty() || pwd.isEmpty())){
             DialogMaker.showProgressDialog(this, "登录中...");
-            new NetImpl().loginQuery(mobile, pwd, new ResponseCallback() {
+            net.loginQuery(mobile, pwd, new ResponseCallback() {
                 @Override
                 public void onSuccess(Object object) {
                     LoginBean bean = (LoginBean)object;
@@ -207,17 +207,12 @@ public class LoginActivity extends SheishuoUI implements View.OnClickListener{
                     SPHelper.setParam(context,"mobile",mobile);
                     SPHelper.setParam(context,"pwd",pwd);
 
-
                     //将用户信息放入缓存
                     AccountCache.setCache(bean.getD());
                     AccountCache.sync();
 
-
-
                     //登录NIM服务
                     new LoginHelper(LoginActivity.this,bean).loginToNIM();
-
-
                 }
 
                 @Override
@@ -359,7 +354,6 @@ public class LoginActivity extends SheishuoUI implements View.OnClickListener{
                 SPHelper.setParam(context,"mobile",tel);
                 SPHelper.setParam(context,"pwd",pwd);
 
-
                 //将用户信息放入缓存
                 AccountCache.setCache(bean.getD());
                 AccountCache.sync();
@@ -368,7 +362,6 @@ public class LoginActivity extends SheishuoUI implements View.OnClickListener{
                 MineSocialCache.setInfo(null);
 
 
-
                 //登录NIM服务
                 new LoginHelper(LoginActivity.this,bean).loginToNIM();
 

+ 15 - 0
app/src/com/sheishuo/app/login/helper/LoginHelper.java

@@ -11,6 +11,8 @@ import com.netease.nimlib.sdk.RequestCallback;
 import com.netease.nimlib.sdk.StatusBarNotificationConfig;
 import com.netease.nimlib.sdk.auth.LoginInfo;
 import com.sheishuo.app.SheishuoCache;
+import com.sheishuo.app.common.util.net.NetImpl;
+import com.sheishuo.app.common.util.net.ResponseCallback;
 import com.sheishuo.app.config.preference.Preferences;
 import com.sheishuo.app.config.preference.UserPreferences;
 import com.sheishuo.app.login.LoginActivity;
@@ -82,6 +84,19 @@ public class LoginHelper {
                     DialogMaker.dismissProgressDialog();
                 }
             });
+
+            //get my social info
+            new NetImpl().getSocialInfo(loginBean.getD().getId(), new ResponseCallback() {
+                @Override
+                public void onSuccess(Object object) {
+
+                }
+
+                @Override
+                public void onFailed(String error) {
+
+                }
+            });
         }
     }
 

+ 199 - 0
app/src/com/sheishuo/app/main/activity/RequestActivity.java

@@ -0,0 +1,199 @@
+package com.sheishuo.app.main.activity;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.design.widget.FloatingActionButton;
+import android.support.design.widget.Snackbar;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.Toolbar;
+import android.view.View;
+import android.widget.Toast;
+
+import com.netease.nim.uikit.common.ui.dialog.DialogMaker;
+import com.netease.nimlib.sdk.NIMClient;
+import com.netease.nimlib.sdk.RequestCallback;
+import com.netease.nimlib.sdk.team.TeamService;
+import com.netease.nimlib.sdk.team.model.Team;
+import com.sheishuo.app.R;
+import com.sheishuo.app.cache.SocialInfoCache;
+import com.sheishuo.app.common.beans.RequestBean;
+import com.sheishuo.app.common.util.net.INet;
+import com.sheishuo.app.common.util.net.NetImpl;
+import com.sheishuo.app.common.util.net.ResponseCallback;
+import com.sheishuo.app.common.views.BaseToolbar;
+import com.sheishuo.app.core_module.friends.activity.ContactsListActivity;
+import com.sheishuo.app.impl.SheishuoUI;
+import com.sheishuo.app.impl.SheishuoUIKit;
+import com.sheishuo.app.main.adapter.RequestAdapter;
+import com.sheishuo.app.main.adapter.RequestItemClickListener;
+
+public class RequestActivity extends SheishuoUI {
+
+    private BaseToolbar toolbar;
+    private RecyclerView recyclerView;
+    private Context context = this;
+    private RequestAdapter requestAdapter;
+    private INet net = new NetImpl();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_request);
+
+        findViews();
+        init();
+    }
+
+    protected void findViews() {
+        toolbar = findView(R.id.toolbar);
+        recyclerView = findView(R.id.request_list_layout);
+    }
+
+    protected void init() {
+
+        toolbar.setTitle("新的朋友");
+        toolbar.setBackOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+
+        requestAdapter = new RequestAdapter(this);
+        recyclerView.setAdapter(requestAdapter);
+        recyclerView.setLayoutManager(new LinearLayoutManager(this));
+        requestAdapter.setOnItemClickListener(new RequestItemClickListener() {
+            @Override
+            public void onAcceptClick(View view) {
+                final RequestBean.ListBean bean = (RequestBean.ListBean)view.getTag();
+                if(bean.getType().equals("0"))
+                {
+                    net.addFriend(bean.getId(), new ResponseCallback() {
+                        @Override
+                        public void onSuccess(Object object) {
+                            SocialInfoCache.setFollow(bean.getUser_id(), true);
+                            makeToast("已关注该用户");
+                            removeRequest(bean);
+                        }
+
+                        @Override
+                        public void onFailed(String error) {
+                            makeToast("加好友失败");
+                        }
+                    });
+                }
+                else if(bean.getType().equals("1"))
+                {
+                    String groupId = bean.getExtra_id();
+                    Team targetTeam = NIMClient.getService(TeamService.class).queryTeamBlock(groupId);
+                    if(targetTeam == null)
+                    {
+                        NIMClient.getService(TeamService.class).queryTeam(groupId).setCallback(new RequestCallback<Team>() {
+                            @Override
+                            public void onSuccess(Team team) {
+                                joinTeam(team, bean);
+                            }
+
+                            @Override
+                            public void onFailed(int i) {
+
+                            }
+
+                            @Override
+                            public void onException(Throwable throwable) {
+
+                            }
+                        });
+                    }
+                    else
+                    {
+                        joinTeam(targetTeam, bean);
+                    }
+                }
+            }
+
+            @Override
+            public void onRejectClick(View view) {
+                DialogMaker.showProgressDialog(context, "", false);
+                final RequestBean.ListBean bean = (RequestBean.ListBean)view.getTag();
+                net.requestDelete(bean.getId(), new ResponseCallback() {
+                    @Override
+                    public void onSuccess(Object object) {
+                        DialogMaker.dismissProgressDialog();
+                        removeRequest(bean);
+                        makeToast("已删除");
+                    }
+
+                    @Override
+                    public void onFailed(String error) {
+                        DialogMaker.dismissProgressDialog();
+                    }
+                });
+            }
+        });
+    }
+
+    private void joinTeam(Team team, final RequestBean.ListBean bean)
+    {
+        if (!team.isMyTeam())
+        {
+            NIMClient.getService(TeamService.class).applyJoinTeam(team.getId(), "申请入群").setCallback(new RequestCallback<Team>() {
+                @Override
+                public void onSuccess(Team team) {
+                    makeToast("已经加入群"+team.getName());
+                    removeRequest(bean);
+                }
+
+                @Override
+                public void onFailed(int i) {
+                    makeToast("加入群失败");
+                }
+
+                @Override
+                public void onException(Throwable throwable) {
+                    makeToast("加入群出错");
+                }
+            });
+        }
+        else
+        {
+            DialogMaker.showProgressDialog(context, "", false);
+            net.requestDelete(bean.getId(), new ResponseCallback() {
+                @Override
+                public void onSuccess(Object object) {
+                    DialogMaker.dismissProgressDialog();
+                    removeRequest(bean);
+                }
+
+                @Override
+                public void onFailed(String error) {
+                    DialogMaker.dismissProgressDialog();
+                }
+            });
+            makeToast("已经在群里");
+        }
+    }
+
+    private void removeRequest(RequestBean.ListBean bean)
+    {
+        ContactsListActivity.requestBean.getD().remove(bean);
+        getHandler().post(new Runnable() {
+            @Override
+            public void run() {
+                requestAdapter.notifyDataSetChanged();
+            }
+        });
+    }
+
+    private void makeToast(final String value)
+    {
+        getHandler().post(new Runnable() {
+            @Override
+            public void run() {
+                Toast.makeText(context, value, Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+}

+ 2 - 2
app/src/com/sheishuo/app/main/activity/SystemMessageActivity.java

@@ -492,8 +492,8 @@ public class SystemMessageActivity extends UI implements TAdapterDelegate,
     }
 
     private void onProcessFailed(final int code, SystemMessage message) {
-        Toast.makeText(SystemMessageActivity.this, "failed, error code=" + code,
-                Toast.LENGTH_LONG).show();
+//        Toast.makeText(SystemMessageActivity.this, "failed, error code=" + code,
+//                Toast.LENGTH_LONG).show();
         if (code == 408) {
             return;
         }

+ 1 - 1
app/src/com/sheishuo/app/main/adapter/AreaGroupsAdapter.java

@@ -53,7 +53,7 @@ public class AreaGroupsAdapter extends RecyclerView.Adapter<AreaGroupsAdapter.Ar
                 holder.groupName.setText(team.getName());
                 holder.groupMemberNum.setText(team.getMemberCount() + "人热聊中");
 
-                if (team.getName().contains("国")) {
+                if (team.getName().contains("国")) {
                     Glide.with(context).load(R.drawable.group_country).into(holder.groupIco);
                 } else if (team.getName().contains("市") || team.getName().contains("省")) {
                     Glide.with(context).load(R.drawable.group_province_city)

+ 7 - 4
app/src/com/sheishuo/app/main/adapter/CircleListAdapter.java

@@ -20,6 +20,7 @@ import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
 import com.netease.nim.uikit.common.ui.imageview.HeadImageView;
+import com.netease.nim.uikit.common.util.sys.ScreenUtil;
 import com.netease.nimlib.sdk.NIMClient;
 import com.netease.nimlib.sdk.RequestCallback;
 import com.netease.nimlib.sdk.msg.MsgService;
@@ -123,11 +124,13 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
         });
 
         //加载thumbs
-        if (bean.getThumbs().size() > 4){
-            //默认为两列,如果超过4张图则显示为3列
-            holder.gridView.setNumColumns(3);
-        }
+//        if (bean.getThumbs().size() > 4){
+//            //默认为两列,如果超过4张图则显示为3列
+//            holder.gridView.setNumColumns(3);
+//        }
+        holder.gridView.setNumColumns(3);
         GridViewAdapter gridViewAdapter = new GridViewAdapter(context,bean.getThumbs(),bean.getPics());
+        gridViewAdapter.imgSizeBlank = ScreenUtil.dip2px(5);
         holder.gridView.setAdapter(gridViewAdapter);
         holder.gridView.setVisibility(bean.getThumbs().size() > 0 ? View.VISIBLE : View.GONE);
 

+ 147 - 0
app/src/com/sheishuo/app/main/adapter/RequestAdapter.java

@@ -0,0 +1,147 @@
+package com.sheishuo.app.main.adapter;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.bumptech.glide.Glide;
+import com.netease.nim.uikit.common.ui.dialog.EasyAlertDialog;
+import com.netease.nim.uikit.common.ui.dialog.EasyAlertDialogHelper;
+import com.netease.nim.uikit.common.ui.dialog.EasyEditDialog;
+import com.netease.nim.uikit.common.ui.imageview.HeadImageView;
+import com.netease.nim.uikit.common.util.sys.ScreenUtil;
+import com.netease.nim.uikit.uinfo.UserInfoHelper;
+import com.netease.nimlib.sdk.NIMClient;
+import com.netease.nimlib.sdk.RequestCallback;
+import com.netease.nimlib.sdk.team.model.Team;
+import com.netease.nimlib.sdk.uinfo.UserService;
+import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
+import com.sheishuo.app.R;
+import com.sheishuo.app.cache.AccountCache;
+import com.sheishuo.app.cache.SocialInfoCache;
+import com.sheishuo.app.common.beans.RequestBean;
+import com.sheishuo.app.core_module.friends.activity.ContactsListActivity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by fenix on 2017/10/19.
+ */
+
+public class RequestAdapter extends RecyclerView.Adapter<RequestAdapter.RequestViewHold> implements View.OnClickListener, View.OnLongClickListener {
+
+    private Context context;
+    private RequestItemClickListener listener;
+
+    public RequestAdapter(Context context){
+        this.context = context;
+    }
+
+    public void setOnItemClickListener(RequestItemClickListener listener) {
+        this.listener = listener;
+    }
+
+    @Override
+    public RequestAdapter.RequestViewHold onCreateViewHolder(ViewGroup parent, int viewType) {
+        View view = View.inflate(context, R.layout.request_item, null);
+        return new RequestAdapter.RequestViewHold(view);
+    }
+
+    @Override
+    public void onBindViewHolder(final RequestAdapter.RequestViewHold holder, int position) {
+        holder.layout.setOnLongClickListener(this);
+        holder.acceptBtn.setOnClickListener(this);
+        final RequestBean.ListBean bean = ContactsListActivity.requestBean.getD().get(position);
+        holder.layout.setTag(bean);
+        holder.acceptBtn.setTag(bean);
+
+        NimUserInfo nimUserInfo = NIMClient.getService(UserService.class).getUserInfo(bean.getUser_id());
+        if(nimUserInfo == null)
+        {
+            List<String> userIds = new ArrayList<String>();
+            userIds.add(bean.getUser_id());
+            NIMClient.getService(UserService.class).fetchUserInfo(userIds).setCallback(new RequestCallback<List<NimUserInfo>>() {
+                @Override
+                public void onSuccess(List<NimUserInfo> nimUserInfos) {
+                    fillInfo(holder, nimUserInfos.get(0), bean);
+                }
+
+                @Override
+                public void onFailed(int i) {
+
+                }
+
+                @Override
+                public void onException(Throwable throwable) {
+
+                }
+            });
+        }
+        else
+        {
+            this.fillInfo(holder, nimUserInfo, bean);
+        }
+    }
+
+    private void fillInfo(RequestAdapter.RequestViewHold holder, NimUserInfo nimUserInfo, RequestBean.ListBean bean)
+    {
+        holder.requestName.setText(SocialInfoCache.getNick(nimUserInfo.getAccount()));
+        holder.requestMsg.setText(bean.getMsg());
+        String avatar = nimUserInfo.getAvatar();
+        Glide.with(holder.requestAvatar.getContext()).load(avatar).into(holder.requestAvatar);
+    }
+
+    @Override
+    public int getItemCount() {
+        return ContactsListActivity.requestBean.getD().size();
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (listener != null) {
+            listener.onAcceptClick(v);
+        }
+    }
+
+    @Override
+    public boolean onLongClick(final View view){
+        EasyAlertDialogHelper.createOkCancelDiolag(context, "提示", "是否删除该消息?", false, new EasyAlertDialogHelper.OnDialogActionListener() {
+            @Override
+            public void doCancelAction() {
+
+            }
+
+            @Override
+            public void doOkAction() {
+                if(listener != null)
+                    listener.onRejectClick(view);
+            }
+        }).show();
+        return true;
+    }
+
+    class RequestViewHold extends RecyclerView.ViewHolder {
+        View layout;
+        HeadImageView requestAvatar;
+        TextView requestName, requestMsg;
+        Button acceptBtn;
+
+        public RequestViewHold(View itemView) {
+            super(itemView);
+
+            layout = itemView.findViewById(R.id.request_item);
+            requestAvatar = (HeadImageView) itemView.findViewById(R.id.request_item_avatar);
+            requestName = (TextView) itemView.findViewById(R.id.request_item_name);
+            requestMsg = (TextView) itemView.findViewById(R.id.request_item_msg);
+            acceptBtn = (Button) itemView.findViewById(R.id.request_item_accept_btn);
+
+        }
+    }
+}

+ 12 - 0
app/src/com/sheishuo/app/main/adapter/RequestItemClickListener.java

@@ -0,0 +1,12 @@
+package com.sheishuo.app.main.adapter;
+
+import android.view.View;
+
+/**
+ * Created by fenix on 2017/10/19.
+ */
+
+public interface RequestItemClickListener {
+    void onAcceptClick(View view);
+    void onRejectClick(View view);
+}

+ 8 - 2
app/src/com/sheishuo/app/main/fragment/AreaGroupsFragment.java

@@ -96,7 +96,6 @@ public class AreaGroupsFragment extends MainTabFragment implements NimLocationMa
 
 
     void init() {
-        updateLocation();
         loadGroups();
         initToolbar();
         loadGiftCache();
@@ -127,6 +126,13 @@ public class AreaGroupsFragment extends MainTabFragment implements NimLocationMa
                 startActivity(new Intent(getActivity(), CreateNewGroupActivity.class));
             }
         });
+
+        getHandler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                updateLocation();
+            }
+        }, 100);
     }
 
     //初始化Toolbar
@@ -180,7 +186,7 @@ public class AreaGroupsFragment extends MainTabFragment implements NimLocationMa
         locationManager = new NimLocationManager(getContext(), this);
 
         if (!NimLocationManager.isLocationEnable(getContext())) {
-            final EasyAlertDialog alertDialog = new EasyAlertDialog(context);
+            final EasyAlertDialog alertDialog = new EasyAlertDialog(getContext());
             alertDialog.setMessage("位置服务未开启");
             alertDialog.addNegativeButton("取消", EasyAlertDialog.NO_TEXT_COLOR, EasyAlertDialog.NO_TEXT_SIZE,
                     new View.OnClickListener() {

+ 5 - 0
app/src/com/sheishuo/app/main/fragment/HomeFragment.java

@@ -133,6 +133,11 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
 
     private void checkNick()
     {
+        if(AccountCache.getAccount() == null)
+        {
+            return;
+        }
+
         final NimUserInfo userInfo = NIMClient.getService(UserService.class).getUserInfo(AccountCache.getAccount().getId());
         if(TextUtils.isEmpty((userInfo.getName())))
         {

+ 2 - 2
app/src/com/sheishuo/app/main/fragment/MineFragment.java

@@ -445,9 +445,9 @@ public class MineFragment extends MainTabFragment implements View.OnClickListene
             @Override
             public void run() {
                 photosLayout.removeAllViews();
-                int widthAndHeight = ImgUtil.getScreenWidth(getActivity()) / 4;
+                int widthAndHeight = ImgUtil.getScreenWidth(getActivity()) / 5;
 
-                for (int i = 0;i < 7 && i < photos.size();i++){
+                for (int i = 0;i < 9 && i < photos.size();i++){
                     ImageView imageView = new ImageView(context);
                     imageView.setAdjustViewBounds(true);
                     imageView.setMaxWidth(widthAndHeight);

+ 1 - 1
app/src/com/sheishuo/app/main/fragment/SessionListFragment.java

@@ -201,7 +201,7 @@ public class SessionListFragment extends MainTabFragment {
         {
             count = ContactsListActivity.requestBean.getD().size();
         }
-        count += NIMClient.getService(SystemMessageService.class).querySystemMessageUnreadCountBlock();
+//        count += NIMClient.getService(SystemMessageService.class).querySystemMessageUnreadCountBlock();
 
         dropFake.setText(""+count);
         dropFake.setVisibility(count>0?View.VISIBLE:View.GONE);

+ 9 - 0
uikit/res/drawable-hdpi/location_btn_bg.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/white" />
+    <corners android:topLeftRadius="10dp"
+        android:topRightRadius="10dp"
+        android:bottomRightRadius="10dp"
+        android:bottomLeftRadius="10dp"/>
+    <stroke android:width="1dp" android:color="@color/grey_light"/>
+</shape>

+ 2 - 0
uikit/src/com/netease/nim/uikit/contact/core/item/ItemTypes.java

@@ -37,5 +37,7 @@ public interface ItemTypes {
         int NORMAL_TEAM = BASE + 1; // 普通群
 
         int ADVANCED_TEAM = BASE + 2; // 高级群
+
+        int CUST_TEAM = BASE + 3; //谁说自建群
     }
 }

+ 2 - 0
uikit/src/com/netease/nim/uikit/contact/core/provider/ContactDataProvider.java

@@ -35,6 +35,8 @@ public class ContactDataProvider implements IContactDataProvider {
             case ItemTypes.TEAMS.ADVANCED_TEAM:
             case ItemTypes.TEAMS.NORMAL_TEAM:
                 return TeamDataProvider.provide(query, itemType);
+            case ItemTypes.TEAMS.CUST_TEAM:
+                return TeamDataProvider.provide(query, itemType);
             case ItemTypes.MSG:
                 return MsgDataProvider.provide(query);
             default:

+ 4 - 0
uikit/src/com/netease/nim/uikit/contact/core/provider/TeamDataProvider.java

@@ -23,6 +23,8 @@ public class TeamDataProvider {
         List<TeamContact> sources = query(query, itemType);
         List<AbsContactItem> items = new ArrayList<>(sources.size());
         for (TeamContact t : sources) {
+            if(itemType == ItemTypes.TEAMS.CUST_TEAM && Integer.parseInt(t.getTeam().getCreator()) < 20000 ) //remove system team
+                continue;
             items.add(createTeamItem(t));
         }
 
@@ -56,6 +58,8 @@ public class TeamDataProvider {
             teams = TeamDataCache.getInstance().getAllAdvancedTeams();
         } else if (itemType == ItemTypes.TEAMS.NORMAL_TEAM) {
             teams = TeamDataCache.getInstance().getAllNormalTeams();
+        } else if (itemType == ItemTypes.TEAMS.CUST_TEAM) {
+            teams = TeamDataCache.getInstance().getAllAdvancedTeams();
         } else {
             teams = TeamDataCache.getInstance().getAllTeams();
         }

+ 1 - 1
uikit/src/com/netease/nim/uikit/contact/core/viewholder/ContactHolder.java

@@ -43,7 +43,7 @@ public class ContactHolder extends AbsContactViewHolder<ContactItem> {
                         .placeholder(R.drawable.group_district)
                         .into(head);
             } else {
-                if (team.getIcon().isEmpty()) {
+                if (team.getIcon() == null || team.getIcon().isEmpty()) {
                     Glide.with(context).load(R.drawable.nim_avatar_group).into(head);
                 } else {
                     Glide.with(context)

+ 7 - 8
uikit/uikit.iml

@@ -59,13 +59,6 @@
       <sourceFolder url="file://$MODULE_DIR$/assets" type="java-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
@@ -73,6 +66,13 @@
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
@@ -85,7 +85,6 @@
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
       <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
       <excludeFolder url="file://$MODULE_DIR$/build/tmp" />

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