diff --git a/OneToOne/src/main/AndroidManifest.xml b/OneToOne/src/main/AndroidManifest.xml index 84e2ac6ad..9a425095e 100644 --- a/OneToOne/src/main/AndroidManifest.xml +++ b/OneToOne/src/main/AndroidManifest.xml @@ -172,6 +172,9 @@ + > { + + @Override + public void onSuccess(List data) { + String title = ""; + mRefreshLayout.finishRefresh(); + mRefreshLayout.finishLoadMore(); + switch (type) { + case TYPE_FANS: + title = WordUtil.getNewString(R.string.activity_my_friend_list_fans); + break; + case TYPE_FOLLOW: + title = WordUtil.getNewString(R.string.activity_my_friend_list_follow); + break; + case TYPE_FRIEND: + title = WordUtil.getNewString(R.string.activity_my_friend_list_friend); + break; + } + if (data.isEmpty()) { + setTitle(title + "(" + adapter.getItemCount() + WordUtil.getNewString(R.string.activity_my_friend_list_people)+")"); + recyclerView.loadMoreFinish(true, false); + return; + } + recyclerView.loadMoreFinish(false, true); + if (page == 1) { + adapter.setList(data); + } else { + adapter.addList(data); + } + page++; + setTitle(title + "(" + adapter.getItemCount() + WordUtil.getNewString(R.string.activity_my_friend_list_people)+")"); + } + + @Override + public void onError(String error) { + + } + } +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/MyFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/MyFragment.java index 6465ac26e..f6a4310df 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/MyFragment.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/MyFragment.java @@ -30,9 +30,12 @@ import com.opensource.svgaplayer.SVGAImageView; import com.opensource.svgaplayer.SVGAParser; import com.opensource.svgaplayer.SVGAVideoEntity; import com.shayu.onetoone.R; +import com.shayu.onetoone.activity.MyFriendListActivity; import com.shayu.onetoone.activity.setting.SettingActivity; import com.shayu.onetoone.adapter.MainMeAdapter; +import com.shayu.onetoone.bean.PeopleNum; import com.shayu.onetoone.bean.SlideBean; +import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.RouteManager; import com.shayu.onetoone.utils.MainHttpConsts; import com.shayu.onetoone.utils.MainHttpUtil; @@ -94,6 +97,10 @@ public class MyFragment extends BaseFragment implements OnItemClickListener { + Bundle bundle = new Bundle(); + bundle.putInt("type", MyFriendListActivity.TYPE_FANS); + RouteManager.forwardActivity(RouteManager.ACTIVITY_MY_FRIEND_LIST, bundle); + }); + followLayout.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putInt("type", MyFriendListActivity.TYPE_FOLLOW); + RouteManager.forwardActivity(RouteManager.ACTIVITY_MY_FRIEND_LIST, bundle); + }); + friendLayout.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putInt("type", MyFriendListActivity.TYPE_FRIEND); + RouteManager.forwardActivity(RouteManager.ACTIVITY_MY_FRIEND_LIST, bundle); + }); + + user_noble_ico = (ImageView) itemView.findViewById(R.id.user_noble_ico); mLevelAnchor = (ImageView) itemView.findViewById(R.id.level_anchor); mLevel = (ImageView) itemView.findViewById(R.id.level); @@ -178,6 +210,7 @@ public class MyFragment extends BaseFragment implements OnItemClickListener() { + @Override + public void onSuccess(PeopleNum data) { + fansNum.setText(data.getFans() + ""); + followNum.setText(data.getFollow() + ""); + friendNum.setText(data.getFriend() + ""); + } + + @Override + public void onError(String error) { + + } + }); + } } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/adapter/MyFriendListAdapter.java b/OneToOne/src/main/java/com/shayu/onetoone/adapter/MyFriendListAdapter.java new file mode 100644 index 000000000..9885a6d62 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/adapter/MyFriendListAdapter.java @@ -0,0 +1,126 @@ +package com.shayu.onetoone.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.makeramen.roundedimageview.RoundedImageView; +import com.shayu.onetoone.R; +import com.shayu.onetoone.bean.FollowBean; +import com.shayu.onetoone.bean.HomeItemBean; +import com.shayu.onetoone.manager.OTONetManager; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.WordUtil; + +import java.util.ArrayList; +import java.util.List; + +public class MyFriendListAdapter extends RecyclerView.Adapter { + List list; + Context context; + + public MyFriendListAdapter(Context context) { + this.context = context; + list=new ArrayList<>(); + } + + public void setList(List list) { + this.list = list; + notifyDataSetChanged(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_my_follow, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { + holder.setDate(list.get(position), position); + } + + @Override + public int getItemCount() { + return list.size(); + } + + public void addList(List data) { + this.list.addAll(data); + notifyDataSetChanged(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + private RoundedImageView avatar; + private ImageView sex; + private TextView uname; + private TextView starUp; + private Button submit; + + public ViewHolder(@NonNull View itemView) { + super(itemView); + avatar = itemView.findViewById(R.id.avatar); + sex = itemView.findViewById(R.id.sex); + uname = itemView.findViewById(R.id.uname); + starUp = itemView.findViewById(R.id.star_up); + submit = itemView.findViewById(R.id.submit); + } + + void setDate(HomeItemBean bean, int position) { + ImgLoader.display(context, bean.getAvatar(), avatar); + uname.setText(bean.getUser_nicename()); + starUp.setText(bean.getStar() + "·" + bean.getStar_name()); + if (bean.getSex() == 1) { + sex.setImageResource(R.mipmap.ic_message_tab_man); + } else { + sex.setImageResource(R.mipmap.ic_message_tab_woman); + } + //isAttention 0 未关注 1被关注 2已关注 3互相关注 + submit.setEnabled(true); + switch (bean.getIsAttention()) { + case 1: + submit.setText(R.string.activity_my_friend_list_item_1); + break; + case 2: + submit.setText(R.string.activity_my_friend_list_item_2); + submit.setEnabled(false); + break; + case 3: + submit.setText(R.string.activity_my_friend_list_item_3); + submit.setEnabled(false); + break; + default: + submit.setText(R.string.activity_my_friend_list_item_0); + } + submit.setOnClickListener(v -> follow(bean.getId() + "", submit)); + + } + + private void follow(String targetId, Button follow) { + OTONetManager.getInstance(context) + .follow(targetId, new HttpCallback() { + @Override + public void onSuccess(FollowBean data) { + ToastUtil.show(WordUtil.getNewString(R.string.system_tip_success)); + follow.setEnabled(false); + follow.setText(R.string.activity_my_friend_list_item_2); + } + + @Override + public void onError(String error) { + + } + }); + } + } + +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/bean/HomeItemBean.java b/OneToOne/src/main/java/com/shayu/onetoone/bean/HomeItemBean.java index 24d3ee4cd..c2f9ce65f 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/bean/HomeItemBean.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/bean/HomeItemBean.java @@ -39,10 +39,19 @@ public class HomeItemBean extends BaseModel { private int age; private int level; private int is_accost; + private int isAttention;//isAttention 0 未关注 1被关注 2已关注 3互相关注 public HomeItemBean() { } + public int getIsAttention() { + return isAttention; + } + + public void setIsAttention(int isAttention) { + this.isAttention = isAttention; + } + public int getId() { return id; } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/bean/PeopleNum.java b/OneToOne/src/main/java/com/shayu/onetoone/bean/PeopleNum.java new file mode 100644 index 000000000..679413870 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/bean/PeopleNum.java @@ -0,0 +1,36 @@ +package com.shayu.onetoone.bean; + +import com.yunbao.common.bean.BaseModel; + +public class PeopleNum extends BaseModel { + int fans; + int follow; + int friend; + + public PeopleNum() { + } + + public int getFans() { + return fans; + } + + public void setFans(int fans) { + this.fans = fans; + } + + public int getFollow() { + return follow; + } + + public void setFollow(int follow) { + this.follow = follow; + } + + public int getFriend() { + return friend; + } + + public void setFriend(int friend) { + this.friend = friend; + } +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/manager/OTONetManager.java b/OneToOne/src/main/java/com/shayu/onetoone/manager/OTONetManager.java index 27e169fcc..94fb68011 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/manager/OTONetManager.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/manager/OTONetManager.java @@ -23,6 +23,7 @@ import com.shayu.onetoone.bean.MatchingInfoBean; import com.shayu.onetoone.bean.MatchingItemSizeBean; import com.shayu.onetoone.bean.MessageConsumeConfigBean; import com.shayu.onetoone.bean.OfficialNoticeBean; +import com.shayu.onetoone.bean.PeopleNum; import com.shayu.onetoone.bean.PurseBean; import com.shayu.onetoone.bean.SendConsumeBean; import com.shayu.onetoone.bean.SystemMessageBean; @@ -1303,4 +1304,55 @@ public class OTONetManager { } }).isDisposed(); } + public void getFollows(int page,HttpCallback> callback) { + API.get().otoApi(mContext). + getFollows(page+"") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + if (listResponseModel.getData().getCode() == 0) { + callback.onSuccess(listResponseModel.getData().getInfo()); + } else { + callback.onError(listResponseModel.getData().getMsg()); + } + }, throwable -> { + if (callback != null) { + callback.onError(mContext.getString(com.yunbao.common.R.string.net_error)); + } + }).isDisposed(); + } + public void getFans(int page,HttpCallback> callback) { + API.get().otoApi(mContext). + getFans(page+"") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + if (listResponseModel.getData().getCode() == 0) { + callback.onSuccess(listResponseModel.getData().getInfo()); + } else { + callback.onError(listResponseModel.getData().getMsg()); + } + }, throwable -> { + if (callback != null) { + callback.onError(mContext.getString(com.yunbao.common.R.string.net_error)); + } + }).isDisposed(); + } + public void getPeopleNum(HttpCallback callback) { + API.get().otoApi(mContext). + getPeopleNum() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(listResponseModel -> { + if (listResponseModel.getData().getCode() == 0) { + callback.onSuccess(listResponseModel.getData().getInfo()); + } else { + callback.onError(listResponseModel.getData().getMsg()); + } + }, throwable -> { + if (callback != null) { + callback.onError(mContext.getString(com.yunbao.common.R.string.net_error)); + } + }).isDisposed(); + } } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java b/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java index ecfd4a37f..23f48f3c6 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java @@ -26,6 +26,7 @@ public class RouteManager { public static final String ACTIVITY_CALL_AUDIO = "/activity/CallVAudioActivity"; public static final String PATH_EDITPROFILE = "/main/EditProfileActivity"; public static final String ACTIVITY_MATCHING = "/activity/MatchingActivity"; + public static final String ACTIVITY_MY_FRIEND_LIST = "/activity/MyFriendListActivity"; //设置基本资料 public static final String ACTIVITY_COMPLETE = "/activity/CompleteActivity"; diff --git a/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java b/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java index e67aea458..3749aaae0 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java @@ -18,6 +18,7 @@ import com.shayu.onetoone.bean.MatchingInfoBean; import com.shayu.onetoone.bean.MatchingItemSizeBean; import com.shayu.onetoone.bean.MessageConsumeConfigBean; import com.shayu.onetoone.bean.OfficialNoticeBean; +import com.shayu.onetoone.bean.PeopleNum; import com.shayu.onetoone.bean.PurseBean; import com.shayu.onetoone.bean.SendConsumeBean; import com.shayu.onetoone.bean.SystemMessageBean; @@ -344,6 +345,13 @@ public interface OneToOneApi { @GET("/api/public/?service=Friendappuser.friend") Observable>> getFriends(@Query("p")String p); + @GET("/api/public/?service=Friendappuser.follow") + Observable>> getFollows(@Query("p")String p); + @GET("/api/public/?service=Friendappuser.fans") + Observable>> getFans(@Query("p")String p); + + @GET("/api/public/?service=Friendappuser.peopleNum") + Observable> getPeopleNum(); } diff --git a/OneToOne/src/main/res/drawable/bg_my_follow_btn.xml b/OneToOne/src/main/res/drawable/bg_my_follow_btn.xml new file mode 100644 index 000000000..b7b358f44 --- /dev/null +++ b/OneToOne/src/main/res/drawable/bg_my_follow_btn.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/drawable/bg_rect_round_tag_btn2.xml b/OneToOne/src/main/res/drawable/bg_rect_round_tag_btn2.xml new file mode 100644 index 000000000..5a951e350 --- /dev/null +++ b/OneToOne/src/main/res/drawable/bg_rect_round_tag_btn2.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/drawable/bg_rect_round_tag_btn3.xml b/OneToOne/src/main/res/drawable/bg_rect_round_tag_btn3.xml new file mode 100644 index 000000000..bb3428575 --- /dev/null +++ b/OneToOne/src/main/res/drawable/bg_rect_round_tag_btn3.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/activity_choose_label.xml b/OneToOne/src/main/res/layout/activity_choose_label.xml index 7fce6b30d..f2812147d 100644 --- a/OneToOne/src/main/res/layout/activity_choose_label.xml +++ b/OneToOne/src/main/res/layout/activity_choose_label.xml @@ -12,7 +12,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" - android:layout_marginTop="15dp" + android:layout_marginTop="@dimen/activity_top" android:padding="10dp" android:text="@string/layout_choose_label_tip1" android:textColor="@color/black2" diff --git a/OneToOne/src/main/res/layout/activity_my_follow.xml b/OneToOne/src/main/res/layout/activity_my_follow.xml new file mode 100644 index 000000000..00a4ce166 --- /dev/null +++ b/OneToOne/src/main/res/layout/activity_my_follow.xml @@ -0,0 +1,37 @@ + + + + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/fragment_my.xml b/OneToOne/src/main/res/layout/fragment_my.xml index e818674e0..6b423b6f7 100644 --- a/OneToOne/src/main/res/layout/fragment_my.xml +++ b/OneToOne/src/main/res/layout/fragment_my.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" + xmlns:tools="http://schemas.android.com/tools" android:background="@color/gray2" android:orientation="vertical" android:paddingBottom="10dp"> @@ -69,6 +70,14 @@ android:scaleType="centerCrop" app:autoPlay="true" /> + + + + + + + + + + + + + + + + + + + + + + + + + + +