package cn.rongcloud.im.ui.activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import cn.rongcloud.im.App;
import cn.rongcloud.im.R;
import cn.rongcloud.im.SealConst;
import cn.rongcloud.im.SealUserInfoManager;
import cn.rongcloud.im.db.Groups;
import cn.rongcloud.im.server.broadcast.BroadcastManager;
import cn.rongcloud.im.server.utils.RongGenerate;
import cn.rongcloud.im.server.widget.SelectableRoundedImageView;
import io.rong.imageloader.core.ImageLoader;
import io.rong.imkit.RongIM;
/**
* Created by AMing on 16/3/8.
* Company RongCloud
*/
public class GroupListActivity extends BaseActivity {
private ListView mGroupListView;
private GroupAdapter adapter;
private TextView mNoGroups;
private EditText mSearch;
private List<Groups> mList;
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fr_group_list);
setTitle(R.string.my_groups);
mGroupListView = (ListView) findViewById(R.id.group_listview);
mNoGroups = (TextView) findViewById(R.id.show_no_group);
mSearch = (EditText) findViewById(R.id.group_search);
mTextView = (TextView)findViewById(R.id.foot_group_size);
initData();
BroadcastManager.getInstance(mContext).addAction(SealConst.GROUP_LIST_UPDATE, new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
initData();
}
});
}
private void initData() {
SealUserInfoManager.getInstance().getGroups(new SealUserInfoManager.ResultCallback<List<Groups>>() {
@Override
public void onSuccess(List<Groups> groupsList) {
mList = groupsList;
if (mList != null && mList.size() > 0) {
adapter = new GroupAdapter(mContext, mList);
mGroupListView.setAdapter(adapter);
mNoGroups.setVisibility(View.GONE);
mTextView.setVisibility(View.VISIBLE);
mTextView.setText(getString(R.string.ac_group_list_group_number, mList.size()));
mGroupListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Groups bean = (Groups) adapter.getItem(position);
RongIM.getInstance().startGroupChat(GroupListActivity.this, bean.getGroupsId(), bean.getName());
}
});
mSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
filterData(s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
} else {
mNoGroups.setVisibility(View.VISIBLE);
}
}
@Override
public void onError(String errString) {
}
});
}
private void filterData(String s) {
List<Groups> filterDataList = new ArrayList<>();
if (TextUtils.isEmpty(s)) {
filterDataList = mList;
} else {
for (Groups groups : mList) {
if (groups.getName().contains(s)) {
filterDataList.add(groups);
}
}
}
adapter.updateListView(filterDataList);
mTextView.setText(getString(R.string.ac_group_list_group_number, filterDataList.size()));
}
class GroupAdapter extends BaseAdapter {
private Context context;
private List<Groups> list;
public GroupAdapter(Context context, List<Groups> list) {
this.context = context;
this.list = list;
}
/**
* 传入新的数据 刷新UI的方法
*/
public void updateListView(List<Groups> list) {
this.list = list;
notifyDataSetChanged();
}
@Override
public int getCount() {
if (list != null) return list.size();
return 0;
}
@Override
public Object getItem(int position) {
if (list == null)
return null;
if (position >= list.size())
return null;
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
final Groups mContent = list.get(position);
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.group_item_new, parent, false);
viewHolder.tvTitle = (TextView) convertView.findViewById(R.id.groupname);
viewHolder.mImageView = (SelectableRoundedImageView) convertView.findViewById(R.id.groupuri);
viewHolder.groupId = (TextView) convertView.findViewById(R.id.group_id);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.tvTitle.setText(mContent.getName());
String portraitUri = SealUserInfoManager.getInstance().getPortraitUri(mContent);
ImageLoader.getInstance().displayImage(portraitUri, viewHolder.mImageView, App.getOptions());
if (context.getSharedPreferences("config", MODE_PRIVATE).getBoolean("isDebug", false)) {
viewHolder.groupId.setVisibility(View.VISIBLE);
viewHolder.groupId.setText(mContent.getGroupsId());
}
return convertView;
}
class ViewHolder {
/**
* 昵称
*/
TextView tvTitle;
/**
* 头像
*/
SelectableRoundedImageView mImageView;
/**
* userId
*/
TextView groupId;
}
}
@Override
public void onBackPressed() {
finish();
super.onBackPressed();
}
@Override
protected void onDestroy() {
super.onDestroy();
BroadcastManager.getInstance(mContext).destroy(SealConst.GROUP_LIST_UPDATE);
}
}