|
@@ -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);
|