Commit 59ca9cf3 by 王文龙

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

parent e691a879
......@@ -13,6 +13,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.jyall.base.adapter.BaseRecyclerViewAdapter;
import com.jyall.base.adapter.RecyclerViewHolderUtil;
import com.jyall.base.util.ValidateUtils;
import com.offcn.imclient.R;
import com.offcn.imclient.bean.ServerContactBean;
import com.offcn.imclient.bean.UserBean;
......@@ -34,7 +35,7 @@ public class ContactListExpandableAdapter extends AnimatedExpandableListView.Ani
private List<ServerContactBean> items;
public ContactListExpandableAdapter(Context context,List<ServerContactBean> list) {
public ContactListExpandableAdapter(Context context, List<ServerContactBean> list) {
inflater = LayoutInflater.from(context);
items = list;
}
......@@ -101,12 +102,31 @@ public class ContactListExpandableAdapter extends AnimatedExpandableListView.Ani
convertView = inflater.inflate(R.layout.item_contact_group, parent, false);
holder.title = (TextView) convertView.findViewById(R.id.tv_name);
holder.count = (TextView) convertView.findViewById(R.id.tv_count);
holder.ivChat = convertView.findViewById(R.id.iv_chat);
convertView.setTag(holder);
} else {
holder = (GroupHolder) convertView.getTag();
}
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;
}
......@@ -130,5 +150,17 @@ public class ContactListExpandableAdapter extends AnimatedExpandableListView.Ani
private static class GroupHolder {
TextView title;
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 {
mRecyclerView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
UserBean userBean = friends.get(groupPosition).getList().get(childPosition);
ServerContactBean contactBean = friends.get(groupPosition);
if (userBean != null) {
if (childPosition == 0) {
if (childPosition == 0) {
// 说明是自定义的群发条目
ServerContactBean contactBean = friends.get(groupPosition);
if (contactBean != null) {
// 群发消息。收集当前群所有用户id,传给聊天页
String title = "";
String title = contactBean.getKey();
String toId = "";
if (contactBean != null) {
title = contactBean.getKey();
}
StringBuilder stringBuilder = new StringBuilder();
List<UserBean> tmpList = contactBean.getList();
if (!ValidateUtils.isEmpty(tmpList)) {
......@@ -85,10 +81,19 @@ public class ContactListFragment extends BaseFragment {
}
}
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 {
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);
} else {
CommonUtils.showToast(getActivity(), "获取学生信息失败");
}
}
......@@ -106,8 +111,35 @@ public class ContactListFragment extends BaseFragment {
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();
}
@Override
......
......@@ -2,8 +2,8 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingLeft="40dp"
android:gravity="center_vertical">
android:gravity="center_vertical"
android:paddingLeft="40dp">
<TextView
android:id="@+id/tv_name"
......@@ -17,4 +17,10 @@
android:layout_height="wrap_content"
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>
\ 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