Browse Source

1.修复全局BaseToolbar的显示Bug
2.完成朋友圈点赞,发布

Junqin Wang 8 years ago
parent
commit
023d85ddd8
55 changed files with 972 additions and 130 deletions
  1. 3 1
      app/AndroidManifest.xml
  2. 7 7
      app/app.iml
  3. BIN
      app/res/drawable-hdpi/friends_add_friends.png
  4. BIN
      app/res/drawable-hdpi/friends_contacts.png
  5. BIN
      app/res/drawable-hdpi/location.png
  6. BIN
      app/res/drawable-hdpi/temp_circle_background.png
  7. BIN
      app/res/drawable-mdpi/friends_add_friends.png
  8. BIN
      app/res/drawable-mdpi/friends_contacts.png
  9. BIN
      app/res/drawable-mdpi/location.png
  10. BIN
      app/res/drawable-mdpi/temp_circle_background.png
  11. BIN
      app/res/drawable-xhdpi/friends_add_friends.png
  12. BIN
      app/res/drawable-xhdpi/friends_contacts.png
  13. BIN
      app/res/drawable-xhdpi/location.png
  14. BIN
      app/res/drawable-xhdpi/temp_circle_background.png
  15. BIN
      app/res/drawable-xxhdpi/friends_add_friends.png
  16. BIN
      app/res/drawable-xxhdpi/friends_contacts.png
  17. BIN
      app/res/drawable-xxhdpi/location.png
  18. BIN
      app/res/drawable-xxhdpi/temp_circle_background.png
  19. BIN
      app/res/drawable-xxxhdpi/friends_add_friends.png
  20. BIN
      app/res/drawable-xxxhdpi/friends_contacts.png
  21. BIN
      app/res/drawable-xxxhdpi/location.png
  22. BIN
      app/res/drawable-xxxhdpi/temp_circle_background.png
  23. 4 3
      app/res/layout/area_groups_list_fragment.xml
  24. 0 2
      app/res/layout/base_toolbar.xml
  25. 25 3
      app/res/layout/circle_item.xml
  26. 57 0
      app/res/layout/circle_new_tweeting.xml
  27. 18 15
      app/res/layout/circle_of_friends_fragment.xml
  28. 2 2
      app/res/layout/main.xml
  29. 12 0
      app/res/menu/main_friends_menu.xml
  30. 2 0
      app/res/values/strings.xml
  31. 1 0
      app/src/com/sheishuo/app/SheishuoApplication.java
  32. 113 0
      app/src/com/sheishuo/app/circle/activity/NewTweetingActivity.java
  33. 65 0
      app/src/com/sheishuo/app/circle/model/NewTweetModel.java
  34. 49 0
      app/src/com/sheishuo/app/circle/model/beans/NewTweetingBean.java
  35. 33 0
      app/src/com/sheishuo/app/circle/presenter/NewTweetPresenter.java
  36. 9 0
      app/src/com/sheishuo/app/common/beans/CircleBean.java
  37. 71 0
      app/src/com/sheishuo/app/common/beans/CircleUserLikedBean.java
  38. 1 0
      app/src/com/sheishuo/app/common/util/img/ImgUtil.java
  39. 6 4
      app/src/com/sheishuo/app/common/util/net/NetInfo.java
  40. 1 1
      app/src/com/sheishuo/app/common/util/rx/RxNet.java
  41. 29 0
      app/src/com/sheishuo/app/common/views/BaseToolbar.java
  42. 43 38
      app/src/com/sheishuo/app/main/activity/MainActivity.java
  43. 107 23
      app/src/com/sheishuo/app/main/adapter/CircleListAdapter.java
  44. 13 0
      app/src/com/sheishuo/app/main/adapter/OnCircleItemClickListener.java
  45. 2 0
      app/src/com/sheishuo/app/main/adapter/OnItemClickListener.java
  46. 56 4
      app/src/com/sheishuo/app/main/fragment/AreaGroupsFragment.java
  47. 91 12
      app/src/com/sheishuo/app/main/fragment/CircleOfFriendsFragment.java
  48. 36 12
      app/src/com/sheishuo/app/main/fragment/HomeFragment.java
  49. 3 0
      app/src/com/sheishuo/app/main/fragment/MainTabFragment.java
  50. 54 0
      app/src/com/sheishuo/app/main/fragment/SessionListFragment.java
  51. 36 2
      app/src/com/sheishuo/app/main/model/CircleModel.java
  52. 1 1
      app/src/com/sheishuo/app/main/model/MainTab.java
  53. 10 0
      app/src/com/sheishuo/app/main/presenter/CirclePresenter.java
  54. 6 0
      uikit/src/com/netease/nim/uikit/common/activity/UI.java
  55. 6 0
      uikit/src/com/netease/nim/uikit/common/fragment/TFragment.java

+ 3 - 1
app/AndroidManifest.xml

@@ -67,7 +67,6 @@
             android:name="com.google.android.maps"
             android:required="false" />
 
-        <!--测试Activity-->
 
         <!-- 登录界面 -->
         <activity android:name=".login.LoginActivity"/>
@@ -112,6 +111,9 @@
             android:theme="@style/AppTheme.NoActionBar"
             android:windowSoftInputMode="adjustResize|stateHidden"/>
 
+        <!--朋友圈相关-->
+        <activity android:name=".circle.activity.NewTweetingActivity"
+            android:theme="@style/AppTheme.NoActionBar"/>
 
 
         <!-- 关于 -->

+ 7 - 7
app/app.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/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" />
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
-      <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" />
@@ -73,6 +66,13 @@
       <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" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
+      <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" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />

BIN
app/res/drawable-hdpi/friends_add_friends.png


BIN
app/res/drawable-hdpi/friends_contacts.png


BIN
app/res/drawable-hdpi/location.png


BIN
app/res/drawable-hdpi/temp_circle_background.png


BIN
app/res/drawable-mdpi/friends_add_friends.png


BIN
app/res/drawable-mdpi/friends_contacts.png


BIN
app/res/drawable-mdpi/location.png


BIN
app/res/drawable-mdpi/temp_circle_background.png


BIN
app/res/drawable-xhdpi/friends_add_friends.png


BIN
app/res/drawable-xhdpi/friends_contacts.png


BIN
app/res/drawable-xhdpi/location.png


BIN
app/res/drawable-xhdpi/temp_circle_background.png


BIN
app/res/drawable-xxhdpi/friends_add_friends.png


BIN
app/res/drawable-xxhdpi/friends_contacts.png


BIN
app/res/drawable-xxhdpi/location.png


BIN
app/res/drawable-xxhdpi/temp_circle_background.png


BIN
app/res/drawable-xxxhdpi/friends_add_friends.png


BIN
app/res/drawable-xxxhdpi/friends_contacts.png


BIN
app/res/drawable-xxxhdpi/location.png


BIN
app/res/drawable-xxxhdpi/temp_circle_background.png


+ 4 - 3
app/res/layout/area_groups_list_fragment.xml

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 
-<ScrollView
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_height="match_parent"
-    android:layout_width="wrap_content">
+    android:layout_width="wrap_content"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -11,6 +11,7 @@
         android:background="@color/grey_light_light"
         android:orientation="vertical">
 
+
         <TextView
             android:id="@+id/area_groups_serachbar"
             android:layout_width="match_parent"

+ 0 - 2
app/res/layout/base_toolbar.xml

@@ -26,7 +26,6 @@
                 android:layout_height="wrap_content"
                 android:layout_weight="6"
                 android:gravity="center"
-                android:text="朋友圈"
                 android:textColor="@color/white"
                 android:textSize="18sp"
                 android:textStyle="bold" />
@@ -37,7 +36,6 @@
                 android:layout_height="wrap_content"
                 android:layout_weight="2"
                 android:gravity="center"
-                android:text="发表"
                 android:textColor="@color/white"
                 android:textSize="16sp" />
 

+ 25 - 3
app/res/layout/circle_item.xml

@@ -21,7 +21,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
-            android:padding="15dp">
+            android:padding="8dp">
 
             <LinearLayout
                 android:layout_width="wrap_content"
@@ -38,8 +38,8 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="vertical"
-                android:layout_marginLeft="15dp"
-                android:layout_marginStart="15dp">
+                android:layout_marginLeft="16dp"
+                android:layout_marginStart="16dp">
 
                 <LinearLayout
                     android:layout_width="match_parent"
@@ -144,6 +144,28 @@
                     </LinearLayout>
                 </LinearLayout>
 
+                <LinearLayout
+                    android:id="@+id/circle_liked_user_layout"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:background="@color/grey_light_light"
+                    android:gravity="start|center_vertical"
+                    android:padding="3dp"
+                    android:layout_marginTop="16dp"
+                    android:orientation="horizontal"
+                    android:visibility="gone">
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:src="@drawable/circe_likes_user" />
+                    <TextView
+                        android:id="@+id/circle_liked_user_tv"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textColor="#337a9b"
+                        android:maxLines="1"
+                        android:maxEms="50"/>
+                </LinearLayout>
             </LinearLayout>
         </LinearLayout>
     </android.support.v7.widget.CardView>

+ 57 - 0
app/res/layout/circle_new_tweeting.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <com.sheishuo.app.common.views.BaseToolbar
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        style="@style/fullToolbarStyle"
+        app:title="发布"
+        app:left_text="返回"
+        app:right_text="确定"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:id="@+id/new_tweet_toolbar" />
+
+    <EditText
+        android:id="@+id/new_tweet_content"
+        android:layout_width="0dp"
+        android:layout_height="256dp"
+        android:ems="10"
+        android:inputType="textPersonName"
+        android:layout_marginRight="8dp"
+        app:layout_constraintRight_toRightOf="@+id/new_tweet_toolbar"
+        android:layout_marginLeft="8dp"
+        app:layout_constraintLeft_toLeftOf="@+id/new_tweet_toolbar"
+        android:layout_marginTop="20dp"
+        app:layout_constraintTop_toBottomOf="@+id/new_tweet_toolbar"
+        android:gravity="start"
+        android:hint="您想说点什么..."
+        app:layout_constraintHorizontal_bias="0.0"
+        android:layout_marginStart="8dp"
+        android:layout_marginEnd="8dp" />
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:background="@color/grey_light_light"
+        android:padding="4dp"
+        app:layout_constraintLeft_toLeftOf="@+id/new_tweet_content"
+        android:layout_marginTop="10dp"
+        app:layout_constraintTop_toBottomOf="@+id/new_tweet_content">
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/location"/>
+        <TextView
+            android:id="@+id/new_tweet_location_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="未定位"
+            android:textColor="@color/grey_light"/>
+    </LinearLayout>
+</android.support.constraint.ConstraintLayout>

+ 18 - 15
app/res/layout/circle_of_friends_fragment.xml

@@ -20,8 +20,7 @@
             android:fitsSystemWindows="true"
             app:contentScrim="?attr/colorPrimary"
             app:expandedTitleMarginStart="48dp"
-            app:expandedTitleMarginEnd="64dp"
-            android:minHeight="?attr/actionBarSize">
+            app:expandedTitleMarginEnd="64dp">
 
 
 
@@ -33,10 +32,11 @@
                 app:layout_collapseMode="parallax"
                 android:fitsSystemWindows="true"   >
                 <ImageView
+                    android:id="@+id/circle_background"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
                     android:scaleType="centerCrop"
-                    android:src="@drawable/ico_01_fujinqun"/>
+                    android:src="@drawable/temp_circle_background"/>
 
                 <LinearLayout
                     android:layout_width="wrap_content"
@@ -46,33 +46,36 @@
                     android:layout_marginStart="40dp"
                     android:layout_marginLeft="40dp"
                     android:layout_marginBottom="40dp">
-                    <ImageView
+                    <com.netease.nim.uikit.common.ui.imageview.HeadImageView
                         android:id="@+id/circle_avatar"
-                        android:layout_width="48dp"
-                        android:layout_height="48dp"
+                        android:layout_width="56dp"
+                        android:layout_height="56dp"
                         android:textStyle="bold"
                         android:textSize="30sp" />
                     <TextView
+                        android:id="@+id/circle_username"
                         android:layout_width="match_parent"
                         android:layout_height="match_parent"
                         android:text="用户昵称"
-                        android:textSize="33sp"
+                        android:textSize="22sp"
                         android:gravity="center"
                         android:textColor="@android:color/white"
+                        android:layout_marginLeft="15dp"
+                        android:layout_marginStart="15dp"
                         />
                 </LinearLayout>
 
             </RelativeLayout>
 
 
-            <com.sheishuo.app.common.views.BaseToolbar
-                android:id="@+id/circle_toolbar"
-                android:layout_width="match_parent"
-                android:layout_height="?attr/actionBarSize"
-                app:layout_collapseMode="pin"
-                app:title="朋友圈"
-                app:right_text="发表"
-                style="@style/fullToolbarStyle"/>
+            <!--<com.sheishuo.app.common.views.BaseToolbar-->
+                <!--android:id="@+id/circle_toolbar"-->
+                <!--android:layout_width="match_parent"-->
+                <!--android:layout_height="?attr/actionBarSize"-->
+                <!--app:layout_collapseMode="pin"-->
+                <!--app:title="朋友圈"-->
+                <!--app:right_text="发表"-->
+                <!--style="@style/fullToolbarStyle"/>-->
 
         </android.support.design.widget.CollapsingToolbarLayout>
 

+ 2 - 2
app/res/layout/main.xml

@@ -12,13 +12,13 @@
         android:theme="@style/AppTheme.AppBarOverlay"
         app:elevation="0dp">
 
-        <android.support.v7.widget.Toolbar
+        <com.sheishuo.app.common.views.BaseToolbar
             android:id="@+id/toolbar"
             android:layout_width="match_parent"
             android:layout_height="?attr/actionBarSize"
             android:background="?attr/colorPrimary"
             app:titleTextAppearance="@style/Toolbar.TitleText"
-            android:visibility="gone"/>
+            android:visibility="visible"/>
     </android.support.design.widget.AppBarLayout>
 
     <com.sheishuo.app.common.ui.viewpager.PagerSlidingTabStrip

+ 12 - 0
app/res/menu/main_friends_menu.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item android:id="@+id/main_friends_menu_contacts"
+        android:title="@string/contacts"
+        app:showAsAction="always"
+        android:icon="@drawable/friends_contacts"/>
+    <item android:id="@+id/main_friends_menu_add"
+        android:title="@string/add_friends"
+        app:showAsAction="always"
+        android:icon="@drawable/friends_add_friends"/>
+</menu>

+ 2 - 0
app/res/values/strings.xml

@@ -385,6 +385,8 @@
     <string name="nrtc_setting_voe_dtx">人声检测</string>
     <string name="please_input_tel_num">请输入手机号</string>
     <string name="please_input_pwd">请输入密码</string>
+    <string name="contacts">通讯录</string>
+    <string name="add_friends">添加朋友</string>
 
 
 </resources>

+ 1 - 0
app/src/com/sheishuo/app/SheishuoApplication.java

@@ -61,6 +61,7 @@ public class SheishuoApplication extends Application {
     private static Context context;
 
 
+
     protected void attachBaseContext(Context newBase) {
         super.attachBaseContext(newBase);
         MultiDex.install(this);

+ 113 - 0
app/src/com/sheishuo/app/circle/activity/NewTweetingActivity.java

@@ -0,0 +1,113 @@
+package com.sheishuo.app.circle.activity;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.widget.Toolbar;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.netease.nimlib.sdk.NIMClient;
+import com.sheishuo.app.AccountCache;
+import com.sheishuo.app.R;
+import com.sheishuo.app.circle.presenter.NewTweetPresenter;
+import com.sheishuo.app.common.views.BaseToolbar;
+import com.sheishuo.app.main.activity.MainActivity;
+import com.sheishuo.app.uikit_implements.SheishuoUI;
+
+/**
+ * Created by KN on 2017/7/21.
+ */
+
+public class NewTweetingActivity extends SheishuoUI {
+    private String TAG = this.getClass().getSimpleName();
+    private Context context = this;
+    private BaseToolbar toolbar;
+    private EditText tweetContent;
+    private TextView locationTV;
+    private NewTweetPresenter presenter;
+
+    public static void start(Context context) {
+        start(context, null);
+    }
+
+    public static void start(Context context, Intent extras) {
+        Intent intent = new Intent();
+        intent.setClass(context, MainActivity.class);
+        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
+        if (extras != null) {
+            intent.putExtras(extras);
+        }
+        context.startActivity(intent);
+    }
+
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.circle_new_tweeting);
+        findViews();
+        init();
+    }
+
+
+
+
+    private void findViews(){
+        toolbar = (BaseToolbar) findViewById(R.id.new_tweet_toolbar);
+        tweetContent = (EditText) findViewById(R.id.new_tweet_content);
+        locationTV = (TextView) findViewById(R.id.new_tweet_location_tv);
+    }
+
+    private void init(){
+
+        presenter = new NewTweetPresenter(this);
+
+        //初始化Toolbar
+        toolbar.getLeftTV().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+
+
+        toolbar.getRightTV().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                presenter.publishNewTweeting(tweetContent.getText().toString());
+            }
+        });
+
+
+        //初始化定位
+        locationTV.setText(AccountCache.getAccount().getCity() + AccountCache.getAccount().getDistrict());
+
+
+
+    }
+
+
+    /**
+     * 以下为开放给Presenter的通用方法
+     */
+
+    public void showToast(final String toast){
+        getHandler().post(new Runnable() {
+            @Override
+            public void run() {
+                Toast.makeText(context, toast, Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+
+
+    public void onTweetSuccess(){
+        showToast("发布成功");
+        finish();
+    }
+
+}

+ 65 - 0
app/src/com/sheishuo/app/circle/model/NewTweetModel.java

@@ -0,0 +1,65 @@
+package com.sheishuo.app.circle.model;
+
+import com.google.gson.Gson;
+import com.sheishuo.app.AccountCache;
+import com.sheishuo.app.circle.model.beans.NewTweetingBean;
+import com.sheishuo.app.circle.presenter.NewTweetPresenter;
+import com.sheishuo.app.common.util.net.INet;
+import com.sheishuo.app.common.util.net.NetImpl;
+import com.sheishuo.app.common.util.net.NetInfo;
+import com.sheishuo.app.common.util.net.ResponseCallback;
+import com.sheishuo.app.login.beans.LoginBean;
+
+import okhttp3.FormBody;
+
+/**
+ * Created by KN on 2017/7/21.
+ */
+
+public class NewTweetModel {
+    private NewTweetPresenter presenter;
+    private INet net;
+    private NewTweetingBean bean;
+
+    public NewTweetModel(NewTweetPresenter presenter){
+        this.presenter = presenter;
+        net = new NetImpl();
+        bean = new NewTweetingBean();
+    }
+
+
+
+    public void publishNewTweeting(final String content){
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                LoginBean.DBean accuont = AccountCache.getAccount();
+                FormBody body = new FormBody.Builder()
+                        .add("id",accuont.getId())
+                        .add("msg",content)
+                        .add("local",accuont.getCity() + accuont.getDistrict())
+                        .add("latitude",accuont.getLatitude())
+                        .add("longitude",accuont.getLongitude())
+                        .build();
+
+
+                net.post(NetInfo.NEW_TWEETING, body, new ResponseCallback() {
+                    @Override
+                    public void onSuccess(Object object) {
+                        bean = new Gson().fromJson((String)object,NewTweetingBean.class);
+                        if (0==bean.getC()){
+                            presenter.onPublishSuccess();
+                        }else {
+                            presenter.showToast("发布失败");
+                        }
+                    }
+
+                    @Override
+                    public void onFailed() {
+                        presenter.showToast("发布失败");
+                    }
+                });
+            }
+        }).start();
+    }
+}

+ 49 - 0
app/src/com/sheishuo/app/circle/model/beans/NewTweetingBean.java

@@ -0,0 +1,49 @@
+package com.sheishuo.app.circle.model.beans;
+
+/**
+ * Created by KN on 2017/7/21.
+ */
+
+public class NewTweetingBean {
+
+
+    /**
+     * c : 0
+     * d : {"id":26}
+     */
+
+    private int c;
+    private DBean d;
+
+    public int getC() {
+        return c;
+    }
+
+    public void setC(int c) {
+        this.c = c;
+    }
+
+    public DBean getD() {
+        return d;
+    }
+
+    public void setD(DBean d) {
+        this.d = d;
+    }
+
+    public static class DBean {
+        /**
+         * id : 26
+         */
+
+        private int id;
+
+        public int getId() {
+            return id;
+        }
+
+        public void setId(int id) {
+            this.id = id;
+        }
+    }
+}

+ 33 - 0
app/src/com/sheishuo/app/circle/presenter/NewTweetPresenter.java

@@ -0,0 +1,33 @@
+package com.sheishuo.app.circle.presenter;
+
+import com.sheishuo.app.circle.activity.NewTweetingActivity;
+import com.sheishuo.app.circle.model.NewTweetModel;
+import com.sheishuo.app.main.model.CircleModel;
+
+/**
+ * Created by KN on 2017/7/21.
+ */
+
+public class NewTweetPresenter {
+    NewTweetingActivity activity;
+    NewTweetModel model;
+
+    public NewTweetPresenter(NewTweetingActivity activity){
+        this.activity = activity;
+        model = new NewTweetModel(this);
+    }
+
+
+    public void publishNewTweeting(String content){
+        model.publishNewTweeting(content);
+    }
+
+    public void onPublishSuccess(){
+        activity.onTweetSuccess();
+    }
+
+    public void showToast(String toast){
+        activity.showToast(toast);
+    }
+
+}

+ 9 - 0
app/src/com/sheishuo/app/common/beans/CircleBean.java

@@ -78,6 +78,7 @@ public class CircleBean implements Serializable{
             private List<String> pics;
             private List<String> thumbs;
             private List<String> like_users;
+            private String liked;
             private List<Comment> comments_list;
 
             public String getId() {
@@ -200,6 +201,14 @@ public class CircleBean implements Serializable{
                 this.comments_list = comments_list;
             }
 
+            public String getLiked() {
+                return liked;
+            }
+
+            public void setLiked(String liked) {
+                this.liked = liked;
+            }
+
             public class Comment{
 
                 /**

+ 71 - 0
app/src/com/sheishuo/app/common/beans/CircleUserLikedBean.java

@@ -0,0 +1,71 @@
+package com.sheishuo.app.common.beans;
+
+import java.util.List;
+
+/**
+ * Created by KN on 2017/7/21.
+ */
+
+public class CircleUserLikedBean {
+
+
+    /**
+     * c : 0
+     * d : {"likes":"2","social_id":"22","like_users":["200028","200030"]}
+     */
+
+    private int c;
+    private DBean d;
+
+    public int getC() {
+        return c;
+    }
+
+    public void setC(int c) {
+        this.c = c;
+    }
+
+    public DBean getD() {
+        return d;
+    }
+
+    public void setD(DBean d) {
+        this.d = d;
+    }
+
+    public static class DBean {
+        /**
+         * likes : 2
+         * social_id : 22
+         * like_users : ["200028","200030"]
+         */
+
+        private String likes;
+        private String social_id;
+        private List<String> like_users;
+
+        public String getLikes() {
+            return likes;
+        }
+
+        public void setLikes(String likes) {
+            this.likes = likes;
+        }
+
+        public String getSocial_id() {
+            return social_id;
+        }
+
+        public void setSocial_id(String social_id) {
+            this.social_id = social_id;
+        }
+
+        public List<String> getLike_users() {
+            return like_users;
+        }
+
+        public void setLike_users(List<String> like_users) {
+            this.like_users = like_users;
+        }
+    }
+}

+ 1 - 0
app/src/com/sheishuo/app/common/util/img/ImgUtil.java

@@ -20,6 +20,7 @@ public class ImgUtil {
     }
 
 
+
     public static float convertDpToPixel(float dp, Context context){
         Resources resources = context.getResources();
         DisplayMetrics metrics = resources.getDisplayMetrics();

+ 6 - 4
app/src/com/sheishuo/app/common/util/net/NetInfo.java

@@ -6,8 +6,10 @@ package com.sheishuo.app.common.util.net;
 
 public class NetInfo {
     public final static String INDEX = "http://whosay.dashgame.com/index.php/";
-    public final static String LOGIN_URL = "?m=who&c=index&a=login";
-    public final static String REG_URL = "?m=who&c=index&a=login";
-    public final static String GET_NEARBY_GROUP = "?m=who&c=index&a=near_room";
-    public final static String CIRCLE_LIST = "?m=who&c=social&a=lists";
+    public final static String LOGIN_URL = INDEX + "?m=who&c=index&a=login";
+    public final static String REG_URL = INDEX + "?m=who&c=index&a=login";
+    public final static String GET_NEARBY_GROUP = INDEX + "?m=who&c=index&a=near_room";
+    public final static String CIRCLE_LIST = INDEX + "?m=who&c=social&a=lists";
+    public final static String CIRCLE_USER_LIKED = INDEX + "?m=who&c=social&a=like";
+    public final static String NEW_TWEETING = INDEX + "?m=who&c=social&a=publish";
 }

+ 1 - 1
app/src/com/sheishuo/app/common/util/rx/RxNet.java

@@ -27,7 +27,7 @@ public class RxNet {
                 .add("pwd","123456")
                 .build();
         final Request request = new Request.Builder()
-                .url(NetInfo.INDEX + NetInfo.LOGIN_URL)
+                .url(NetInfo.LOGIN_URL)
                 .post(body)
                 .build();
 //        Observable observable = Observable.create();

+ 29 - 0
app/src/com/sheishuo/app/common/views/BaseToolbar.java

@@ -69,4 +69,33 @@ public class BaseToolbar extends Toolbar {
     public TextView getRightTV() {
         return rightTV;
     }
+
+
+    public void init(){
+        titleTV.setVisibility(INVISIBLE);
+        leftTV.setVisibility(INVISIBLE);
+        rightTV.setVisibility(INVISIBLE);
+        titleTV.setOnClickListener(null);
+        leftTV.setOnClickListener(null);
+        rightTV.setOnClickListener(null);
+        this.setLogo(null);
+    }
+
+    public void setTitle(String title){
+        getTitleTV().setText(title);
+        titleTV.setVisibility(VISIBLE);
+    }
+
+    public void setLeftText(String leftStr){
+        getLeftTV().setText(leftStr);
+        leftTV.setVisibility(VISIBLE);
+
+    }
+
+    public void setRightText(String rightStr){
+        getRightTV().setText(rightStr);
+        rightTV.setVisibility(VISIBLE);
+
+    }
+
 }

+ 43 - 38
app/src/com/sheishuo/app/main/activity/MainActivity.java

@@ -7,6 +7,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
@@ -53,8 +54,8 @@ import java.util.ArrayList;
 public class MainActivity extends SheishuoUI {
 
     private static final String EXTRA_APP_QUIT = "APP_QUIT";
-    private static final int REQUEST_CODE_NORMAL = 1;
-    private static final int REQUEST_CODE_ADVANCED = 2;
+    public static final int REQUEST_CODE_NORMAL = 1;
+    public static final int REQUEST_CODE_ADVANCED = 2;
     private static final String TAG = MainActivity.class.getSimpleName();
     private final int BASIC_PERMISSION_REQUEST_CODE = 100;
 
@@ -209,42 +210,42 @@ public class MainActivity extends SheishuoUI {
         outState.clear();
     }
 
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        MenuInflater inflater = getMenuInflater();
-        inflater.inflate(R.menu.main_activity_menu, menu);
-        super.onCreateOptionsMenu(menu);
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.about:
-                startActivity(new Intent(MainActivity.this, SettingsActivity.class));
-                break;
-            case R.id.create_normal_team:
-                ContactSelectActivity.Option option = TeamHelper.getCreateContactSelectOption(null, 50);
-                NimUIKit.startContactSelect(MainActivity.this, option, REQUEST_CODE_NORMAL);
-                break;
-            case R.id.create_regular_team:
-                ContactSelectActivity.Option advancedOption = TeamHelper.getCreateContactSelectOption(null, 50);
-                NimUIKit.startContactSelect(MainActivity.this, advancedOption, REQUEST_CODE_ADVANCED);
-                break;
-            case R.id.search_advanced_team:
-                AdvancedTeamSearchActivity.start(MainActivity.this);
-                break;
-            case R.id.add_buddy:
-                AddFriendActivity.start(MainActivity.this);
-                break;
-            case R.id.search_btn:
-                GlobalSearchActivity.start(MainActivity.this);
-                break;
-            default:
-                break;
-        }
-        return super.onOptionsItemSelected(item);
-    }
+//    @Override
+//    public boolean onCreateOptionsMenu(Menu menu) {
+//        MenuInflater inflater = getMenuInflater();
+//        inflater.inflate(R.menu.main_activity_menu, menu);
+//        super.onCreateOptionsMenu(menu);
+//        return true;
+//    }
+//
+//    @Override
+//    public boolean onOptionsItemSelected(MenuItem item) {
+//        switch (item.getItemId()) {
+//            case R.id.about:
+//                startActivity(new Intent(MainActivity.this, SettingsActivity.class));
+//                break;
+//            case R.id.create_normal_team:
+//                ContactSelectActivity.Option option = TeamHelper.getCreateContactSelectOption(null, 50);
+//                NimUIKit.startContactSelect(MainActivity.this, option, REQUEST_CODE_NORMAL);
+//                break;
+//            case R.id.create_regular_team:
+//                ContactSelectActivity.Option advancedOption = TeamHelper.getCreateContactSelectOption(null, 50);
+//                NimUIKit.startContactSelect(MainActivity.this, advancedOption, REQUEST_CODE_ADVANCED);
+//                break;
+//            case R.id.search_advanced_team:
+//                AdvancedTeamSearchActivity.start(MainActivity.this);
+//                break;
+//            case R.id.add_buddy:
+//                AddFriendActivity.start(MainActivity.this);
+//                break;
+//            case R.id.search_btn:
+//                GlobalSearchActivity.start(MainActivity.this);
+//                break;
+//            default:
+//                break;
+//        }
+//        return super.onOptionsItemSelected(item);
+//    }
 
     private void onParseIntent() {
         Intent intent = getIntent();
@@ -288,6 +289,7 @@ public class MainActivity extends SheishuoUI {
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
+        Log.e(TAG,"onActivityResult " + requestCode + "    " + resultCode);
         if (resultCode == Activity.RESULT_OK) {
             if (requestCode == REQUEST_CODE_NORMAL) {
                 final ArrayList<String> selected = data.getStringArrayListExtra(ContactSelectActivity.RESULT_DATA);
@@ -304,6 +306,9 @@ public class MainActivity extends SheishuoUI {
 
     }
 
+
+
+
     // 注销
     private void onLogout() {
         // 清理缓存&注销监听

+ 107 - 23
app/src/com/sheishuo/app/main/adapter/CircleListAdapter.java

@@ -9,20 +9,27 @@ import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.bumptech.glide.Glide;
+import com.netease.nim.uikit.robot.parser.elements.group.LinearLayout;
 import com.netease.nimlib.sdk.NIMClient;
 import com.netease.nimlib.sdk.RequestCallback;
 import com.netease.nimlib.sdk.uinfo.UserService;
 import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.R;
+import com.sheishuo.app.SheishuoApplication;
 import com.sheishuo.app.common.beans.CircleBean;
 import com.sheishuo.app.common.beans.NearbyGroupsBean;
+import com.sheishuo.app.common.util.img.ImgUtil;
 import com.sheishuo.app.common.views.GridViewAdapter;
 import com.sheishuo.app.common.views.ImgGridView;
 
 import java.util.ArrayList;
 import java.util.List;
 
+import static com.sheishuo.app.R.id.circle_liked_user_tv;
+import static com.sheishuo.app.R.id.holder;
 import static com.sheishuo.app.R.id.layout_scr_bottom;
+import static com.sheishuo.app.R.id.name;
 import static com.sheishuo.app.R.id.visit_num_tv;
 
 /**
@@ -32,11 +39,11 @@ import static com.sheishuo.app.R.id.visit_num_tv;
 public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.CircleListViewHolder> implements View.OnClickListener{
 
     private List<CircleBean.DBean.ListBean> data;
-    private OnItemClickListener listener;
+    private OnCircleItemClickListener listener;
 
     public CircleListAdapter(CircleBean bean){
         data = new ArrayList<>();
-        data.addAll(bean.getD().getList());
+        this.addAll(bean);
     }
 
     @Override
@@ -48,6 +55,7 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
     @Override
     public void onBindViewHolder(final CircleListViewHolder holder, int position) {
         final CircleBean.DBean.ListBean bean = data.get(position);
+
         holder.layout.setTag(bean);
         holder.layout.setOnClickListener(this);
         holder.contentTV.setText(bean.getMsg());
@@ -56,7 +64,6 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
         holder.likesNumTV.setText(bean.getLikes());
         holder.visitNumTv.setText(bean.getViews());
 
-
         //获取此朋友圈中的所有用户id
         List<String> userList = new ArrayList<>();
         //添加此朋友圈发布者id
@@ -77,21 +84,7 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
             @Override
             public void onSuccess(List<NimUserInfo> user) {
 
-                //有用户名显示用户名,无用户名显示用户ID
-                if (getUserName(bean.getUser_id()).trim().equals("")){
-                    holder.usernameTV.setText(bean.getUser_id());
-                }else {
-                    holder.usernameTV.setText(getUserName(bean.getUser_id()));
-
-                }
-
-                String allLikedUser = "";
-                for (String likedUser:bean.getLike_users()){
-                    allLikedUser += (getUserName(likedUser) + ",");
-                }
-
-                Log.e("CommentsTAG","以下用户赞了" + allLikedUser);
-
+                holder.usernameTV.setText(getUserName(bean.getUser_id()));
 
             }
 
@@ -113,9 +106,70 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
             //默认为两列,如果超过4张图则显示为3列
             holder.gridView.setNumColumns(3);
         }
-
         holder.gridView.setAdapter(gridViewAdapter);
 
+
+
+        //加载朋友圈列表用户头像
+        if (NIMClient.getService(UserService.class).getUserInfo(bean.getUser_id())!= null){
+            String url = NIMClient.getService(UserService.class).getUserInfo(bean.getUser_id()).getAvatar();
+            Glide.with(SheishuoApplication.getContext()).load(url).into(holder.avatar);
+        }
+
+
+
+        //加载点赞用户
+        if (bean.getLike_users().size() > 0){
+            holder.likedUserLayout.setVisibility(View.VISIBLE);
+            String allLikedUser = "";
+            for (String likedUserId:bean.getLike_users()){
+                allLikedUser += getUserName(likedUserId) + ",";
+            }
+
+            holder.likedUserTV.setText(allLikedUser);
+        }
+
+
+        //判断此条朋友圈是否已经点赞,并设置监听事件
+        if (bean.getLiked().equals("1")){
+            Glide.with(SheishuoApplication.getContext()).load(R.drawable.circle_liked).into(holder.likedImg);
+            holder.likedImg.setOnClickListener(null);
+        }else {
+            Glide.with(SheishuoApplication.getContext()).load(R.drawable.circle_likes).into(holder.likedImg);
+
+            holder.likedImg.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    Glide.with(SheishuoApplication.getContext()).load(R.drawable.circle_liked).into(holder.likedImg);
+                    int num = Integer.parseInt(holder.likesNumTV.getText().toString());
+
+
+                    //修改本地缓存
+                    num++;
+                    bean.setLikes(String.valueOf(num));
+                    bean.setLiked("1");
+
+
+                    holder.likesNumTV.setText(String.valueOf(num));
+                    holder.likedImg.setOnClickListener(null);
+                    v.setTag(bean);
+                    listener.onLikedClick(v);
+                }
+            });
+
+        }
+
+
+
+    }
+
+    @Override
+    public void onViewRecycled(CircleListViewHolder holder) {
+        super.onViewRecycled(holder);
+        //解决Glide不能使用添加了Tag的ImageView的问题
+        holder.likedImg.setTag(null);
+
+        holder.likedUserLayout.setVisibility(View.GONE);
     }
 
     @Override
@@ -123,21 +177,47 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
         return data.size();
     }
 
+
+    //有用户名返回用户名,无用户名返回用户ID
+
     private String getUserName(String userId){
-        return NIMClient.getService(UserService.class).getUserInfo(userId).getName();
+        if (NIMClient.getService(UserService.class).getUserInfo(userId) != null) {
+            String name = NIMClient.getService(UserService.class).getUserInfo(userId).getName();
+            if (name.equals("")){
+                return userId;
+            }else {
+                return name;
+            }
+        }
+        return "";
+
     }
 
-    public void setOnItemClickListener(OnItemClickListener listener){
+    //设置Item点击事件
+    public void setOnItemClickListener(OnCircleItemClickListener listener){
         this.listener = listener;
     }
 
+
+
+
+
     public void addAll(CircleBean bean){
         this.data.addAll(bean.getD().getList());
     }
 
     @Override
     public void onClick(View v) {
-        if (listener != null) listener.onItemClick(v);
+        if (listener != null){
+            switch (v.getId()){
+                //Item点击
+                case R.id.circle_item_cardview:
+                    listener.onItemClick(v);
+                    break;
+
+            }
+        }
+
     }
 
     class CircleListViewHolder extends RecyclerView.ViewHolder{
@@ -147,13 +227,16 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
                 ,locationTV
                 ,dateTV
                 ,visitNumTv
-                ,likesNumTV;
+                ,likesNumTV
+                ,likedUserTV;
         private ImgGridView gridView;
         private ImageView avatar,likedImg;
+        private View likedUserLayout;
 
         public CircleListViewHolder(View v) {
             super(v);
             layout = (CardView) v.findViewById(R.id.circle_item_cardview);
+            likedUserLayout = v.findViewById(R.id.circle_liked_user_layout);
             gridView = (ImgGridView) v.findViewById(R.id.gridview_imgs);
             usernameTV = (TextView) v.findViewById(R.id.username_tv);
             contentTV = (TextView) v.findViewById(R.id.user_content_tv);
@@ -161,6 +244,7 @@ public class CircleListAdapter  extends RecyclerView.Adapter<CircleListAdapter.C
             dateTV = (TextView) v.findViewById(R.id.date_tv);
             visitNumTv = (TextView) v.findViewById(visit_num_tv);
             likesNumTV = (TextView) v.findViewById(R.id.likes_num_tv);
+            likedUserTV = (TextView) v.findViewById(circle_liked_user_tv);
 
             avatar = (ImageView) v.findViewById(R.id.avatar_img);
             likedImg = (ImageView) v.findViewById(R.id.liked_img);

+ 13 - 0
app/src/com/sheishuo/app/main/adapter/OnCircleItemClickListener.java

@@ -0,0 +1,13 @@
+package com.sheishuo.app.main.adapter;
+
+import android.view.View;
+
+/**
+ * Created by KN on 2017/7/21.
+ */
+
+public interface OnCircleItemClickListener {
+    void onItemClick(View view);
+
+    void onLikedClick(View view);
+}

+ 2 - 0
app/src/com/sheishuo/app/main/adapter/OnItemClickListener.java

@@ -8,4 +8,6 @@ import android.view.View;
 
 public interface OnItemClickListener {
     void onItemClick(View view);
+
 }
+

+ 56 - 4
app/src/com/sheishuo/app/main/fragment/AreaGroupsFragment.java

@@ -1,28 +1,43 @@
 package com.sheishuo.app.main.fragment;
 
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.Toolbar;
 import android.util.Log;
 import android.view.View;
 import android.widget.TextView;
 
 import com.google.gson.Gson;
 import com.netease.nim.uikit.NimUIKit;
+import com.netease.nim.uikit.common.activity.UI;
+import com.netease.nim.uikit.contact_selector.activity.ContactSelectActivity;
 import com.netease.nim.uikit.robot.parser.elements.group.LinearLayout;
 import com.netease.nim.uikit.session.SessionCustomization;
+import com.netease.nim.uikit.team.helper.TeamHelper;
+import com.netease.nim.uikit.team.model.TeamRequestCode;
 import com.netease.nimlib.sdk.NIMClient;
 import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
 import com.netease.nimlib.sdk.team.TeamService;
 import com.netease.nimlib.sdk.team.model.Team;
 import com.sheishuo.app.AccountCache;
 import com.sheishuo.app.R;
+import com.sheishuo.app.SheishuoApplication;
 import com.sheishuo.app.common.beans.NearbyGroupsBean;
 import com.sheishuo.app.common.util.net.INet;
 import com.sheishuo.app.common.util.net.NetImpl;
 import com.sheishuo.app.common.util.net.NetInfo;
 import com.sheishuo.app.common.util.net.ResponseCallback;
+import com.sheishuo.app.common.views.BaseToolbar;
+import com.sheishuo.app.login.beans.LoginBean;
+import com.sheishuo.app.main.activity.MainActivity;
 import com.sheishuo.app.main.adapter.AreaGroupsAdapter;
 import com.sheishuo.app.main.adapter.OnItemClickListener;
+import com.sheishuo.app.team.TeamCreateHelper;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -34,7 +49,10 @@ import okhttp3.FormBody;
  */
 
 public class AreaGroupsFragment extends MainTabFragment {
-    private TextView headSearchBar;
+    private String TAG = this.getClass().getSimpleName();
+    private Context context = getActivity();
+    private BaseToolbar toolbar;
+    private MainActivity parent;
 
     private RecyclerView areaGroupsRecyclerview,nearbyGroupsRecyclerview;
 
@@ -45,17 +63,36 @@ public class AreaGroupsFragment extends MainTabFragment {
 
 
     private INet net = new NetImpl();
+
     @Override
     protected void onInit() {
         findViews();
         loadGroups();
+        initToolbar();
+
+
     }
 
     void findViews(){
+        parent = (MainActivity)getActivity();
+        toolbar = (BaseToolbar) parent.getToolBar();
         areaGroupsRecyclerview = findView(R.id.area_groups_recyclerview);
         nearbyGroupsRecyclerview = findView(R.id.area_groups_nearby_recyclerview);
     }
 
+    void initToolbar(){
+        toolbar.init();
+        toolbar.setTitle("群组");
+        LoginBean.DBean account = AccountCache.getAccount();
+        toolbar.setLeftText(account.getCity() + account.getDistrict());
+        toolbar.setRightText("创建");
+        toolbar.getRightTV().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                ContactSelectActivity.startActivityForResult(getActivity(), TeamHelper.getContactSelectOption(null), MainActivity.REQUEST_CODE_ADVANCED);
+            }
+        });
+    }
     void loadGroups(){
         List<String> groupIds = new ArrayList<>();
         groupIds.add(AccountCache.getAccount().getCountry_room_id());
@@ -88,8 +125,6 @@ public class AreaGroupsFragment extends MainTabFragment {
 
 
         //加载附近的群
-
-
         new Thread(new Runnable() {
             @Override
             public void run() {
@@ -98,7 +133,7 @@ public class AreaGroupsFragment extends MainTabFragment {
                         .add("latitude",AccountCache.getAccount().getLatitude())
                         .add("longitude",AccountCache.getAccount().getLongitude())
                         .build();
-                net.post(NetInfo.INDEX + NetInfo.GET_NEARBY_GROUP, body, new ResponseCallback() {
+                net.post(NetInfo.GET_NEARBY_GROUP, body, new ResponseCallback() {
                     @Override
                     public void onSuccess(Object object) {
                         String resultStr = (String)object;
@@ -144,4 +179,21 @@ public class AreaGroupsFragment extends MainTabFragment {
         }).start();
 
     }
+
+
+
+
+    @Override
+    public void setUserVisibleHint(boolean isVisibleToUser) {
+        super.setUserVisibleHint(isVisibleToUser);
+        if (isVisibleToUser && toolbar != null){
+            initToolbar();
+        }
+    }
+
+
+
+
+
+
 }

+ 91 - 12
app/src/com/sheishuo/app/main/fragment/CircleOfFriendsFragment.java

@@ -1,25 +1,29 @@
 package com.sheishuo.app.main.fragment;
 
 import android.content.Context;
-import android.os.Bundle;
+import android.content.Intent;
 import android.os.Handler;
-import android.support.design.widget.CollapsingToolbarLayout;
-import android.support.design.widget.FloatingActionButton;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
-import android.view.LayoutInflater;
+import android.util.Log;
 import android.view.View;
-import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
 import android.widget.Toast;
 
+import com.bumptech.glide.Glide;
 import com.netease.nimlib.sdk.NIMClient;
 import com.netease.nimlib.sdk.uinfo.UserService;
+import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
 import com.sheishuo.app.AccountCache;
 import com.sheishuo.app.R;
+import com.sheishuo.app.SheishuoApplication;
+import com.sheishuo.app.circle.activity.NewTweetingActivity;
 import com.sheishuo.app.common.beans.CircleBean;
 import com.sheishuo.app.common.views.BaseToolbar;
+import com.sheishuo.app.main.activity.MainActivity;
 import com.sheishuo.app.main.adapter.CircleListAdapter;
+import com.sheishuo.app.main.adapter.OnCircleItemClickListener;
 import com.sheishuo.app.main.model.MainTab;
 import com.sheishuo.app.main.presenter.CirclePresenter;
 
@@ -28,15 +32,18 @@ import com.sheishuo.app.main.presenter.CirclePresenter;
  * Created by KN on 2017/7/17.
  */
 
-public class CircleOfFriendsFragment extends MainTabFragment {
+public class CircleOfFriendsFragment extends MainTabFragment{
+    private String TAG = this.getClass().getSimpleName();
 
     private Context context = getActivity();
     private CirclePresenter presenter = new CirclePresenter(this);
 
 
     private RecyclerView recyclerView;
+    private ImageView avatar,backgroundImg;
+    private TextView username;
     private BaseToolbar toolbar;
-    private CollapsingToolbarLayout toolbarLayout;
+    private MainActivity parent;
 
     private CircleListAdapter adapter;
 
@@ -49,22 +56,79 @@ public class CircleOfFriendsFragment extends MainTabFragment {
     public CircleOfFriendsFragment(){
         setContainerId(MainTab.CIRCLE_OF_FRIENDS.fragmentId);
     }
+
+
     @Override
     protected void onInit() {
         findViews();
+        initToolbar();
+
+        if (getActivity() instanceof MainActivity){
+            Log.e(TAG,"Yes");
+        }
+
         presenter.loadCircleList(AccountCache.getAccount().getId(),"0");
 
+        //初始化朋友圈首页界面
+        NimUserInfo user = NIMClient.getService(UserService.class).getUserInfo(AccountCache.getAccount().getId());
+        String avatarUrl = user.getAvatar();
+        Glide.with(SheishuoApplication.getContext()).load(avatarUrl).into(avatar);
+
+        username.setText(user.getName());
+
+
+
+
     }
 
+
     void findViews(){
+        parent = (MainActivity) getActivity();
+        toolbar = (BaseToolbar) parent.getToolBar();
+
         recyclerView = (RecyclerView) getView().findViewById(R.id.circle_recyclerview);
-        toolbar = (BaseToolbar) getView().findViewById(R.id.circle_toolbar);
-        toolbarLayout = (CollapsingToolbarLayout) getView().findViewById(R.id.collapsing_toolbar);
+        avatar = (ImageView) getView().findViewById(R.id.circle_avatar);
+        username = (TextView) getView().findViewById(R.id.circle_username);
+        backgroundImg = (ImageView) getView().findViewById(R.id.circle_background);
+    }
+
+    //初始化toolbar
+    void initToolbar(){
+        toolbar.init();
+        toolbar.setTitle("朋友圈");
+        toolbar.setRightText("发表");
+        toolbar.getRightTV().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Log.e(TAG,"start NewTweetActivity");
+                //NewTweetingActivity.start(getActivity());
+
+                startActivity(new Intent(getActivity(),NewTweetingActivity.class));
+            }
+        });
+
+    }
+
+
+    @Override
+    public void setUserVisibleHint(boolean isVisibleToUser) {
+        super.setUserVisibleHint(isVisibleToUser);
+        if (isVisibleToUser && toolbar != null) initToolbar();
     }
 
+    /**
+     *  以下为开放给Presenter调用的通用方法
+     */
+
+
+    public void showToast(final String str){
+        handler.post(new Runnable() {
+            @Override
+            public void run() {
+                Toast.makeText(getActivity(),str,Toast.LENGTH_SHORT).show();
 
-    public void showToast(String str){
-        Toast.makeText(getActivity(),str,Toast.LENGTH_SHORT).show();
+            }
+        });
     }
 
 
@@ -76,6 +140,21 @@ public class CircleOfFriendsFragment extends MainTabFragment {
                 if (adapter == null){
                     adapter = new CircleListAdapter(bean);
                     recyclerView.setLayoutManager(layoutManager);
+                    //初始化adapter监听事件
+                    adapter.setOnItemClickListener(new OnCircleItemClickListener() {
+                        @Override
+                        public void onItemClick(View view) {
+
+                        }
+
+                        @Override
+                        public void onLikedClick(View view) {
+                            CircleBean.DBean.ListBean bean = (CircleBean.DBean.ListBean) view.getTag();
+                            Log.e(TAG,"点赞的朋友圈ID === " + bean.getId());
+                            presenter.onUserLiked(bean.getId());
+                        }
+                    });
+
                     recyclerView.setAdapter(adapter);
                 }else {
                     adapter.addAll(bean);

+ 36 - 12
app/src/com/sheishuo/app/main/fragment/HomeFragment.java

@@ -1,9 +1,12 @@
 package com.sheishuo.app.main.fragment;
 
+import android.app.Activity;
 import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.design.widget.BottomNavigationView;
+import android.support.v4.app.Fragment;
 import android.support.v4.view.ViewPager;
 import android.support.v4.view.ViewPager.OnPageChangeListener;
 import android.support.v7.widget.Toolbar;
@@ -17,6 +20,7 @@ import com.netease.nim.uikit.common.fragment.TFragment;
 import com.netease.nim.uikit.common.ui.drop.DropCover;
 import com.netease.nim.uikit.common.ui.drop.DropManager;
 import com.netease.nim.uikit.common.util.log.LogUtil;
+import com.netease.nim.uikit.contact_selector.activity.ContactSelectActivity;
 import com.netease.nimlib.sdk.NIMClient;
 import com.netease.nimlib.sdk.Observer;
 import com.netease.nimlib.sdk.msg.MsgService;
@@ -35,6 +39,7 @@ import com.sheishuo.app.main.helper.SystemMessageUnreadManager;
 import com.sheishuo.app.main.model.MainTab;
 import com.sheishuo.app.main.reminder.ReminderItem;
 import com.sheishuo.app.main.reminder.ReminderManager;
+import com.sheishuo.app.team.TeamCreateHelper;
 import com.sheishuo.app.uikit_implements.SheishuoToolbarOptions;
 
 import java.util.ArrayList;
@@ -52,6 +57,8 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
 
     private ViewPager pager;
 
+    private Toolbar toolbar;
+
     private int scrollState;
 
     private MainTabPagerAdapter adapter;
@@ -75,9 +82,8 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
-        setToolBar(R.id.toolbar, R.string.app_name, R.drawable.actionbar_dark_logo);
-
-        setTitle(R.string.app_name);
+        //setToolBar(R.id.toolbar, R.string.app_name, R.drawable.actionbar_dark_logo);
+        //setTitle(R.string.app_name);
 
 
         findViews();
@@ -91,6 +97,7 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
         autoJoinAreaChat();
 
 
+
         //暂时用来解决无法加载首页的bug
         getHandler().postDelayed(new Runnable() {
             @Override
@@ -160,12 +167,6 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
 
         selectPage(position);
 
-        //朋友圈专用Toolbar
-        if (3==position){
-            getToolbar().setTitle("朋友圈");
-            getToolbar().setTitleTextColor(getResources().getColor(R.color.white));
-            getToolbar().setLogo(R.drawable._04_checked);
-        }
 
         navigationView.setSelectedItemId(navigationbarItemList.get(position));
         enableMsgNotification(false);
@@ -176,9 +177,6 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
         return ((MainActivity)getActivity()).getToolBar();
     }
 
-    public void setToolbar(SheishuoToolbarOptions options){
-
-    }
 
 
     @Override
@@ -207,9 +205,13 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
      * 查找页面控件
      */
     private void findViews() {
+        toolbar = findView(R.id.toolbar);
         tabs = findView(R.id.tabs);
         pager = findView(R.id.main_tab_pager);
         navigationView = findView(R.id.main_navigationbar);
+
+        //将Toolbar传递给MainActivity
+        setToolBar(toolbar);
     }
 
     @Override
@@ -259,6 +261,7 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
      * 设置tab条目
      */
     private void setupTabs() {
+
         tabs.setOnCustomTabListener(new PagerSlidingTabStrip.OnCustomTabListener() {
             @Override
             public int getTabLayoutResId(int position) {
@@ -344,6 +347,7 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
      * 初始化未读红点动画
      */
     private void initUnreadCover() {
+
         DropManager.getInstance().init(getContext(), (DropCover) findView(R.id.unread_cover),
                 new DropCover.IDropCompletedListener() {
             @Override
@@ -373,4 +377,24 @@ public class HomeFragment extends TFragment implements OnPageChangeListener, Rem
             }
         });
     }
+
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        //super.onActivityResult(requestCode, resultCode, data);
+        List<String> test = data.getStringArrayListExtra(ContactSelectActivity.RESULT_DATA);
+        Log.e("返回的用户为",test.get(0));
+
+        Log.e("resultCode",resultCode+"");
+        Log.e("requestCode",requestCode+"");
+        switch (resultCode){
+            //创建群回调
+            case Activity.RESULT_OK:
+                List<String> memberList = data.getStringArrayListExtra(ContactSelectActivity.RESULT_DATA);
+                Log.e("返回的用户为",memberList.get(0));
+                TeamCreateHelper.createAdvancedTeam(context,memberList);
+                break;
+        }
+    }
+
 }

+ 3 - 0
app/src/com/sheishuo/app/main/fragment/MainTabFragment.java

@@ -1,5 +1,6 @@
 package com.sheishuo.app.main.fragment;
 
+import android.content.Intent;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -54,4 +55,6 @@ public abstract class MainTabFragment extends TabFragment {
         }
         return root != null;
     }
+
+
 }

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

@@ -1,6 +1,10 @@
 package com.sheishuo.app.main.fragment;
 
 import android.os.Bundle;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
 import android.view.View;
 import android.widget.TextView;
 import android.widget.Toast;
@@ -20,9 +24,11 @@ import com.netease.nimlib.sdk.msg.attachment.MsgAttachment;
 import com.netease.nimlib.sdk.msg.model.IMMessage;
 import com.netease.nimlib.sdk.msg.model.RecentContact;
 import com.sheishuo.app.R;
+import com.sheishuo.app.common.views.BaseToolbar;
 import com.sheishuo.app.config.preference.Preferences;
 import com.sheishuo.app.login.LoginActivity;
 import com.sheishuo.app.login.LogoutHelperBak;
+import com.sheishuo.app.main.activity.MainActivity;
 import com.sheishuo.app.main.activity.MultiportActivity;
 import com.sheishuo.app.main.model.MainTab;
 import com.sheishuo.app.main.reminder.ReminderManager;
@@ -40,6 +46,7 @@ import java.util.Map;
  * Created by zhoujianghua on 2015/8/17.
  */
 public class SessionListFragment extends MainTabFragment {
+    private String TAG = this.getClass().getSimpleName();
 
     private View notifyBar;
 
@@ -51,6 +58,9 @@ public class SessionListFragment extends MainTabFragment {
     private View multiportBar;
 
     private RecentContactsFragment fragment;
+    private BaseToolbar toolbar;
+
+    private MainActivity parent;
 
     public SessionListFragment() {
         this.setContainerId(MainTab.RECENT_CONTACTS.fragmentId);
@@ -74,6 +84,8 @@ public class SessionListFragment extends MainTabFragment {
         registerObservers(true);
 
         addRecentContactsFragment();
+
+        initToolbar();
     }
 
     private void registerObservers(boolean register) {
@@ -82,6 +94,12 @@ public class SessionListFragment extends MainTabFragment {
     }
 
     private void findViews() {
+        parent = (MainActivity) getActivity();
+        toolbar = (BaseToolbar) parent.getToolBar();
+
+        //fragment需调用此函数来申明有菜单项
+        setHasOptionsMenu(true);
+
         notifyBar = getView().findViewById(R.id.status_notify_bar);
         notifyBarText = (TextView) getView().findViewById(R.id.status_desc_label);
         notifyBar.setVisibility(View.GONE);
@@ -96,6 +114,42 @@ public class SessionListFragment extends MainTabFragment {
         });
     }
 
+
+    //初始化toolbar
+    public void initToolbar(){
+        toolbar.init();
+        toolbar.setTitle("朋友");
+    }
+
+    @Override
+    public void setUserVisibleHint(boolean isVisibleToUser) {
+        super.setUserVisibleHint(isVisibleToUser);
+        if (isVisibleToUser && toolbar != null) initToolbar();
+    }
+
+    @Override
+    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        Log.e(TAG,"Create Menu");
+        inflater.inflate(R.menu.main_friends_menu,menu);
+        super.onCreateOptionsMenu(menu,inflater);
+
+    }
+
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()){
+            case R.id.main_friends_menu_contacts:
+                Log.e(TAG,"打开联系人列表");
+                return true;
+            case R.id.main_friends_menu_add:
+                Log.e(TAG,"添加朋友");
+                return true;
+            default:
+                return super.onOptionsItemSelected(item);
+        }
+    }
+
     /**
      * 用户状态变化
      */

+ 36 - 2
app/src/com/sheishuo/app/main/model/CircleModel.java

@@ -1,7 +1,9 @@
 package com.sheishuo.app.main.model;
 
 import com.google.gson.Gson;
+import com.sheishuo.app.AccountCache;
 import com.sheishuo.app.common.beans.CircleBean;
+import com.sheishuo.app.common.beans.CircleUserLikedBean;
 import com.sheishuo.app.common.util.net.INet;
 import com.sheishuo.app.common.util.net.NetImpl;
 import com.sheishuo.app.common.util.net.NetInfo;
@@ -25,19 +27,19 @@ public class CircleModel implements ICircle {
     }
 
 
+    //获取朋友圈列表
     @Override
     public void getCircleList(final String user_id, final String last_id) {
         new Thread(new Runnable() {
             @Override
             public void run() {
 
-                String url = NetInfo.INDEX + NetInfo.CIRCLE_LIST;
                 FormBody body = new FormBody.Builder()
                         .add("user_id",user_id)
                         .add("last_id",last_id)
                         .build();
 
-                net.post(url, body, new ResponseCallback() {
+                net.post(NetInfo.CIRCLE_LIST, body, new ResponseCallback() {
                     @Override
                     public void onSuccess(Object object) {
                         String result = (String)object;
@@ -59,4 +61,36 @@ public class CircleModel implements ICircle {
         }).start();
 
     }
+
+
+    //用户点赞
+    public void onUserLiked(final String social_id){
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                FormBody body = new FormBody.Builder()
+                        .add("user_id", AccountCache.getAccount().getId())
+                        .add("social_id",social_id)
+                        .build();
+                net.post(NetInfo.CIRCLE_USER_LIKED, body, new ResponseCallback() {
+                    @Override
+                    public void onSuccess(Object object) {
+                        CircleUserLikedBean bean = new Gson().fromJson((String)object,CircleUserLikedBean.class);
+                        if (0 == bean.getC()){
+                            presenter.showToast("点赞成功");
+                        }else {
+                            presenter.showToast("点赞失败");
+                        }
+
+                    }
+
+                    @Override
+                    public void onFailed() {
+                        presenter.showToast("点赞失败");
+                    }
+                });
+            }
+        }).start();
+    }
+
 }

+ 1 - 1
app/src/com/sheishuo/app/main/model/MainTab.java

@@ -10,7 +10,7 @@ import com.sheishuo.app.main.fragment.ContactListFragment;
 import com.sheishuo.app.main.fragment.MainTabFragment;
 
 public enum MainTab {
-    AREA_GROUPS(0,ReminderId.INVALID, AreaGroupsFragment.class,R.string.main_tab_groups,R.layout.area_groups_list_fragment),
+    AREA_GROUPS(0,ReminderId.CONTACT, AreaGroupsFragment.class,R.string.main_tab_groups,R.layout.area_groups_list_fragment),
     RECENT_CONTACTS(1, ReminderId.SESSION, SessionListFragment.class, R.string.main_tab_session, R.layout.session_list),
     CHAT_ROOM(2, ReminderId.INVALID, ChatRoomListFragment.class, R.string.chat_room, R.layout.chat_room_tab),
     CIRCLE_OF_FRIENDS(3,ReminderId.INVALID, CircleOfFriendsFragment.class,R.string.main_tab_circleoffriends,R.layout.circle_of_friends_fragment),

+ 10 - 0
app/src/com/sheishuo/app/main/presenter/CirclePresenter.java

@@ -23,16 +23,26 @@ public class CirclePresenter {
     }
 
 
+    //显示Toast
     public void showToast(String str){
         fragment.showToast(str);
     }
 
+    //加载列表
     public void loadCircleList(String user_id,String last_id){
         model.getCircleList(user_id,last_id);
     }
 
+    //加载完成回调
     public void onCircleListLoaded(CircleBean bean){
         fragment.onCircleListLoaded(bean);
     }
 
+
+    //用户点赞
+    public void onUserLiked(String id){
+        model.onUserLiked(id);
+    }
+
+
 }

+ 6 - 0
uikit/src/com/netease/nim/uikit/common/activity/UI.java

@@ -101,6 +101,12 @@ public abstract class UI extends AppCompatActivity {
         }
     }
 
+
+
+    public void setToolbar(Toolbar toolbar) {
+        this.toolbar = toolbar;
+    }
+
     public void setToolBar(int toolbarId, int titleId, int logoId) {
         toolbar = (Toolbar) findViewById(toolbarId);
         toolbar.setTitle(titleId);

+ 6 - 0
uikit/src/com/netease/nim/uikit/common/fragment/TFragment.java

@@ -5,6 +5,7 @@ import android.content.Context;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.v4.app.Fragment;
+import android.support.v7.widget.Toolbar;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 
@@ -128,6 +129,11 @@ public abstract class TFragment extends Fragment {
         return (T) (getView().findViewById(resId));
     }
 
+    protected void setToolBar(Toolbar toolBar){
+        if (getActivity() != null && getActivity() instanceof UI) {
+            ((UI) getActivity()).setToolbar(toolBar);
+        }
+    }
     protected void setToolBar(int toolbarId, int titleId, int logoId) {
         if (getActivity() != null && getActivity() instanceof UI) {
             ((UI)getActivity()).setToolBar(toolbarId, titleId, logoId);