Commit 59ca9cf3 by 王文龙

[update]优化通讯录中群发点击事件处理

parent e691a879
...@@ -13,6 +13,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy; ...@@ -13,6 +13,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.jyall.base.adapter.BaseRecyclerViewAdapter; import com.jyall.base.adapter.BaseRecyclerViewAdapter;
import com.jyall.base.adapter.RecyclerViewHolderUtil; import com.jyall.base.adapter.RecyclerViewHolderUtil;
import com.jyall.base.util.ValidateUtils;
import com.offcn.imclient.R; import com.offcn.imclient.R;
import com.offcn.imclient.bean.ServerContactBean; import com.offcn.imclient.bean.ServerContactBean;
import com.offcn.imclient.bean.UserBean; import com.offcn.imclient.bean.UserBean;
...@@ -34,7 +35,7 @@ public class ContactListExpandableAdapter extends AnimatedExpandableListView.Ani ...@@ -34,7 +35,7 @@ public class ContactListExpandableAdapter extends AnimatedExpandableListView.Ani
private List<ServerContactBean> items; private List<ServerContactBean> items;
public ContactListExpandableAdapter(Context context,List<ServerContactBean> list) { public ContactListExpandableAdapter(Context context, List<ServerContactBean> list) {
inflater = LayoutInflater.from(context); inflater = LayoutInflater.from(context);
items = list; items = list;
} }
...@@ -101,12 +102,31 @@ public class ContactListExpandableAdapter extends AnimatedExpandableListView.Ani ...@@ -101,12 +102,31 @@ public class ContactListExpandableAdapter extends AnimatedExpandableListView.Ani
convertView = inflater.inflate(R.layout.item_contact_group, parent, false); convertView = inflater.inflate(R.layout.item_contact_group, parent, false);
holder.title = (TextView) convertView.findViewById(R.id.tv_name); holder.title = (TextView) convertView.findViewById(R.id.tv_name);
holder.count = (TextView) convertView.findViewById(R.id.tv_count); holder.count = (TextView) convertView.findViewById(R.id.tv_count);
holder.ivChat = convertView.findViewById(R.id.iv_chat);
convertView.setTag(holder); convertView.setTag(holder);
} else { } else {
holder = (GroupHolder) convertView.getTag(); holder = (GroupHolder) convertView.getTag();
} }
holder.title.setText(item.getKey()); holder.title.setText(item.getKey());
int itemCount = 0;
if (!ValidateUtils.isEmpty(item.getList())) {
itemCount = item.getList().size();
}
if (itemCount == 0) {
holder.count.setVisibility(View.GONE);
} else {
holder.count.setVisibility(View.VISIBLE);
holder.count.setText(String.valueOf(itemCount));
}
holder.ivChat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnContactItemElementClickListener != null) {
mOnContactItemElementClickListener.onClickChat(groupPosition, 0);
}
}
});
return convertView; return convertView;
} }
...@@ -130,5 +150,17 @@ public class ContactListExpandableAdapter extends AnimatedExpandableListView.Ani ...@@ -130,5 +150,17 @@ public class ContactListExpandableAdapter extends AnimatedExpandableListView.Ani
private static class GroupHolder { private static class GroupHolder {
TextView title; TextView title;
TextView count; TextView count;
ImageView ivChat;
}
public void setOnContactItemElementClickListener(OnContactItemElementClickListener onContactItemElementClickListener) {
mOnContactItemElementClickListener = onContactItemElementClickListener;
}
OnContactItemElementClickListener mOnContactItemElementClickListener;
public interface OnContactItemElementClickListener {
void onClickChat(int groupPosition, int childPosition);
} }
} }
...@@ -63,17 +63,13 @@ public class ContactListFragment extends BaseFragment { ...@@ -63,17 +63,13 @@ public class ContactListFragment extends BaseFragment {
mRecyclerView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { mRecyclerView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override @Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
UserBean userBean = friends.get(groupPosition).getList().get(childPosition); if (childPosition == 0) {
ServerContactBean contactBean = friends.get(groupPosition); // 说明是自定义的群发条目
if (userBean != null) { ServerContactBean contactBean = friends.get(groupPosition);
if (childPosition == 0) { if (contactBean != null) {
// 群发消息。收集当前群所有用户id,传给聊天页 // 群发消息。收集当前群所有用户id,传给聊天页
String title = ""; String title = contactBean.getKey();
String toId = ""; String toId = "";
if (contactBean != null) {
title = contactBean.getKey();
}
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
List<UserBean> tmpList = contactBean.getList(); List<UserBean> tmpList = contactBean.getList();
if (!ValidateUtils.isEmpty(tmpList)) { if (!ValidateUtils.isEmpty(tmpList)) {
...@@ -85,10 +81,19 @@ public class ContactListFragment extends BaseFragment { ...@@ -85,10 +81,19 @@ public class ContactListFragment extends BaseFragment {
} }
} }
toId = stringBuilder.toString(); toId = stringBuilder.toString();
OIMSDK.getInstance().startChat(getActivity(), OIMSendTypeEnum.GROUP, toId, title, 0);
} else {
CommonUtils.showToast(getActivity(), "该课程下暂无学生");
} }
OIMSDK.getInstance().startChat(getActivity(), OIMSendTypeEnum.GROUP, toId, title, 0);
} else { } else {
CommonUtils.showToast(getActivity(), "获取课程信息失败");
}
} else {
UserBean userBean = friends.get(groupPosition).getList().get(childPosition);
if (userBean != null) {
OIMSDK.getInstance().startChat(getActivity(), OIMSendTypeEnum.PRIVATE, userBean.getUser_id(), userBean.getName(), 0); OIMSDK.getInstance().startChat(getActivity(), OIMSendTypeEnum.PRIVATE, userBean.getUser_id(), userBean.getName(), 0);
} else {
CommonUtils.showToast(getActivity(), "获取学生信息失败");
} }
} }
...@@ -106,8 +111,35 @@ public class ContactListFragment extends BaseFragment { ...@@ -106,8 +111,35 @@ public class ContactListFragment extends BaseFragment {
return true; return true;
} }
}); });
mAdapter.setOnContactItemElementClickListener(new ContactListExpandableAdapter.OnContactItemElementClickListener() {
@Override
public void onClickChat(int groupPosition, int childPosition) {
ServerContactBean contactBean = friends.get(groupPosition);
if (contactBean != null) {
// 群发消息。收集当前群所有用户id,传给聊天页
String title = contactBean.getKey();
String toId = "";
StringBuilder stringBuilder = new StringBuilder();
List<UserBean> tmpList = contactBean.getList();
if (!ValidateUtils.isEmpty(tmpList)) {
for (int i = 0; i < tmpList.size(); i++) {
UserBean tmp = tmpList.get(i);
stringBuilder.append(tmp.getUser_id());
if (i != tmpList.size() - 1) {
stringBuilder.append(",");
}
}
toId = stringBuilder.toString();
OIMSDK.getInstance().startChat(getActivity(), OIMSendTypeEnum.GROUP, toId, title, 0);
} else {
CommonUtils.showToast(getActivity(), "该课程下暂无学生");
}
}
}
});
getContactList(); getContactList();
} }
@Override @Override
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
android:paddingLeft="40dp" android:gravity="center_vertical"
android:gravity="center_vertical"> android:paddingLeft="40dp">
<TextView <TextView
android:id="@+id/tv_name" android:id="@+id/tv_name"
...@@ -17,4 +17,10 @@ ...@@ -17,4 +17,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="5dp" /> android:layout_marginLeft="5dp" />
<ImageView
android:id="@+id/iv_chat"
android:src="@mipmap/ic_teacher"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment