package com.parttime.IM.activitysetting;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.RequestQueue;
import com.carson.constant.ConstantForSaveList;
import com.easemob.chat.EMGroupManager;
import com.easemob.chatuidemo.activity.BaseActivity;
import com.easemob.exceptions.EaseMobException;
import com.parttime.common.Image.ContactImageLoader;
import com.parttime.common.head.ActivityHead;
import com.parttime.constants.ActivityExtraAndKeys;
import com.parttime.net.DefaultCallback;
import com.parttime.net.HuanXinRequest;
import com.parttime.net.UserDetailRequest;
import com.parttime.pojo.BaseUser;
import com.qingmu.jianzhidaren.R;
import com.quark.model.HuanxinUser;
import com.quark.utils.NetWorkCheck;
import com.quark.volley.VolleySington;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class GroupGagActivity extends BaseActivity {
private ActivityHead headView;
private ListView listView;
private UngagAdapter adapter = new UngagAdapter();
private ArrayList<AdapterVO> adapterVOs = new ArrayList<>();
private String groupId;
protected RequestQueue queue = VolleySington.getInstance().getRequestQueue();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_group_gag);
initView();
bindData();
}
private void initView() {
headView = new ActivityHead(this);
headView.setCenterTxt1(R.string.group_not_allow_send_msg);
listView = (ListView)findViewById(R.id.listView);
listView.setAdapter(adapter);
Intent intent = getIntent();
groupId = intent.getStringExtra(ActivityExtraAndKeys.GroupSetting.GROUPID);
new Thread(new Runnable() {
public void run() {
//获取禁言列表
new UserDetailRequest().getGagList(groupId,queue,new DefaultCallback(){
@Override
public void success(Object obj) {
@SuppressWarnings("unchecked")
final ArrayList<UserDetailRequest.GagUser> gagUsers = (ArrayList<UserDetailRequest.GagUser>) obj;
if (gagUsers != null) {
runOnUiThread(new Runnable() {
public void run() {
Map<String, BaseUser> userIdPictureMap = ConstantForSaveList.userIdUserCache;
StringBuilder requestData = new StringBuilder();
final HashMap<String , AdapterVO> temp = new HashMap<>();
for(UserDetailRequest.GagUser gagUser : gagUsers) {
if(gagUser == null){
continue;
}
String userId = gagUser.userId;
AdapterVO vo = new AdapterVO();
vo.userId = userId;
if(userIdPictureMap != null){
BaseUser baseUser = userIdPictureMap.get(userId);
if(baseUser != null) {
vo.picture = baseUser.picture;
vo.name = gagUser.alias;
}else{
requestData.append(userId).append(",");
}
}else{
requestData.append(userId).append(",");
}
if(TextUtils.isEmpty(vo.name)){
temp.put(userId, vo);
}else {
adapterVOs.add(vo);
}
}
//从普通群组过来的数据可能存在没有用户信息的情况
if(requestData.length() > 0){ //本地不存在用户信息,直接请求网络数据
String requestD = requestData.subSequence(0, requestData.length() - 1).toString();
//获取环信用户信息
new HuanXinRequest().getHuanxinUserList(requestD, queue , new DefaultCallback(){
@Override
public void success(Object obj) {
@SuppressWarnings("unchecked")
ArrayList<HuanxinUser> huanxinUsers = (ArrayList<HuanxinUser>)obj;
if(huanxinUsers != null && huanxinUsers.size() > 0){
for(HuanxinUser huanxinUser : huanxinUsers){
String userId = huanxinUser.getUid();
AdapterVO vo = temp.get(userId);
if(vo != null){
vo.name = huanxinUser.getName();
vo.picture = huanxinUser.getAvatar();
adapterVOs.add(vo);
}
}
adapter.notifyDataSetChanged();
}
}
});
}else {
adapter.notifyDataSetChanged();
}
}
});
}
}
});
}
}).start();
}
private void bindData() {
}
@Override
protected void onDestroy() {
super.onDestroy();
//清除保存的UserId和picture
ConstantForSaveList.userIdUserCache.clear();
}
class UngagAdapter extends BaseAdapter{
@Override
public int getCount() {
return adapterVOs.size();
}
@Override
public AdapterVO getItem(int position) {
return adapterVOs.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view ;
ViewHolder holder ;
if(convertView == null){
view = getLayoutInflater().inflate(R.layout.activity_group_gag_item,parent, false);
holder = new ViewHolder();
holder.picture = (ImageView)view.findViewById(R.id.picture);
holder.name = (TextView)view.findViewById(R.id.name);
holder.unGag = (Button)view.findViewById(R.id.ungag);
view.setTag(holder);
}else{
view = convertView;
holder = (ViewHolder) view.getTag();
}
bindItemData(holder, position);
return view;
}
private void bindItemData(ViewHolder holder , int position) {
AdapterVO itemVo = getItem(position);
//设置头像
String head = itemVo.picture;
if (! TextUtils.isEmpty(head)) {
holder.picture.setTag(itemVo.picture);
// 默认加载本地图片
ContactImageLoader.loadNativePhoto(String.valueOf(itemVo.userId),
head, holder.picture, queue);
} else {
holder.picture.setBackgroundResource(R.drawable.default_avatar);
}
holder.name.setText(itemVo.name);
holder.unGag.setTag(position);
holder.unGag.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if (! NetWorkCheck.isOpenNetwork(GroupGagActivity.this)) {
Toast.makeText(getApplicationContext(), getString(R.string.no_net_tip), Toast.LENGTH_SHORT).show();
return;
}
int position = (int)v.getTag();
final AdapterVO itemVo = getItem(position);
final String tobeRemoveUser = itemVo.userId;
new Thread(new Runnable() {
@Override
public void run() {
new UserDetailRequest().setUserGag(groupId,tobeRemoveUser, UserDetailRequest.GagStatus.OFF, queue, new DefaultCallback(){
@Override
public void success(Object obj) {
runOnUiThread(new Runnable() {
@Override
public void run() {
adapterVOs.remove(itemVo);
adapter.notifyDataSetChanged();
}
});
}
@Override
public void failed(Object obj) {
Toast.makeText(GroupGagActivity.this, getString(R.string.failed),Toast.LENGTH_SHORT).show();
}
});
}
}).start();
}
});
}
}
class AdapterVO{
String userId;
String name;
String picture;
}
class ViewHolder{
ImageView picture;
TextView name;
Button unGag;
}
}