硅谷社交12--群列表页面

1)页面布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <com.hyphenate.easeui.widget.EaseTitleBar
        app:titleBarTitle="群组列表"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </com.hyphenate.easeui.widget.EaseTitleBar>

    <ListView
        android:id="@+id/lv_grouplist"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </ListView>
</LinearLayout>

2)Listview添加头布局

// 获取头布局view
View headerView = View.inflate(GroupListActivity.this, R.layout.header_group_list, null);
// 添加头布局view
lv_group_list.addHeaderView(headerView);

3)Listview初始化

// 创建适配器
mGroupListAdapter = new GroupListAdapter(GroupListActivity.this);
// 将适配器添加到listview中
lv_group_list.setAdapter(mGroupListAdapter);

4)Listview适配器

public class GroupListAdapter extends BaseAdapter {
    private Context mContext;
    private List<EMGroup> mEMGroups = new ArrayList<>();

    public GroupListAdapter(Context context) {
        mContext = context;
    }

    // 刷新方法
    public void refresh(List<EMGroup> eMGroups){
        if(eMGroups != null && eMGroups.size() >= 0) {
            // 加载数据
            mEMGroups.clear();
            mEMGroups.addAll(eMGroups);
            // 通知刷新页面
            notifyDataSetChanged();
        }
    }

    @Override
    public int getCount() {
        return mEMGroups == null? 0:mEMGroups.size();
    }

    @Override
    public Object getItem(int position) {
        return mEMGroups.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // 创建或获取viewhoder
        ViewHolder holder = null;
        if(convertView == null) {
            holder = new ViewHolder();
            convertView = View.inflate(mContext, R.layout.item_group_list, null);
            holder.tv_name = (TextView) convertView.findViewById(R.id.tv_group_list_name);
            convertView.setTag(holder);
        }else {
            holder = (ViewHolder) convertView.getTag();
        }
        // 获取当前item数据
        EMGroup emGroup = mEMGroups.get(position);
        // 显示数据
        holder.tv_name.setText(emGroup.getGroupName());
        // 返回convertview
        return convertView;
    }

    static class  ViewHolder{
        TextView tv_name;
    }
}

5)从环信服务器获取群组联系人信息

// 联网获取群信息
private void getGroupFromHxServier() {
	Model.getInstace().getGolbalThreadPool().execute(new Runnable() {
		@Override
		public void run() {
			try {
				// 联网获取群信息
				EMClient.getInstance().groupManager().getJoinedGroupsFromServer();

				runOnUiThread(new Runnable() {
					@Override
					public void run() {
						Toast.makeText(GroupListActivity.this, "加载群信息成功", Toast.LENGTH_SHORT).show();
						// 刷新显示
						mGroupListAdapter.refresh(EMClient.getInstance().groupManager().getAllGroups());
					}
				});
			} catch (HyphenateException e) {
				e.printStackTrace();
				runOnUiThread(new Runnable() {
					@Override
					public void run() {
						Toast.makeText(GroupListActivity.this, "加载群信息失败", Toast.LENGTH_SHORT).show();
					}
				});

			}
		}
	});
}

6)Listview刷新页面

// 刷新显示
mGroupListAdapter.refresh(EMClient.getInstance().groupManager().getAllGroups());

7)群列表条目的点击事件

// 群列表的点击事件
lv_group_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

		// 跳转到聊天页面
		Intent intent = new Intent(GroupListActivity.this, ChatActivity.class);

		// 获取群id
		String groupId = EMClient.getInstance().groupManager().getAllGroups().get(position - 1).getGroupId();
		intent.putExtra(EaseConstant.EXTRA_USER_ID, groupId);

		// 保存群聊天类型
		intent.putExtra(EaseConstant.EXTRA_CHAT_TYPE, EaseConstant.CHATTYPE_GROUP);

		startActivity(intent);
	}
});

8)创建新群的点击监听

// 群组条目的点击事件
ll_group_list.setOnClickListener(new View.OnClickListener() {
	@Override
	public void onClick(View v) {
		// 跳转到新建群页面
		Intent intent = new Intent(GroupListActivity.this, NewGroupActivity.class);

		startActivity(intent);
	}
});

9)页面可见时刷新页面

@Override
protected void onResume() {
	super.onResume();
	// 刷新页面
	mGroupListAdapter.refresh(EMClient.getInstance().groupManager().getAllGroups());
}

  

时间: 2024-08-12 02:30:50

硅谷社交12--群列表页面的相关文章

硅谷社交10--会话详情页面

1)页面布局 会话页面.png 群聊天页面.png 2)创建环信提供的会话页面 // 创建会话页面的fragment easeChatFragment = new EaseChatFragment(); // 获取环信id hxid = getIntent().getExtras().getString(EaseConstant.EXTRA_USER_ID); // 获取聊天类型 chatType = getIntent().getExtras().getInt(EaseConstant.EXT

硅谷社交14--选择联系人页面

1)页面布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent&

硅谷社交9--邀请信息列表页面

1.页面布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent&

硅谷社交8--联系人列表页面

1.是否有邀请信息红点的设置 // 获取当前是否有新的邀请信息 boolean is_notify = SpUtils.getInstace(IMApplication.getGlobalApplication()).getBoolean(SpUtils.IS_INVITE_NOTIY, false); iv_contact_notify.setVisibility(is_notify ? View.VISIBLE : View.GONE); 2.注册联系人邀请信息变化的广播 private B

硅谷社交3--登录页面

1.页面布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent&

从零开始编写自己的C#框架(22)——添加普通列表页面

普通列表页面指的是上一章那种有层次感列表以外的正常列表页面,由于上一章已讲解了正常添加页面的相关操作了,所以部分相关的操作本章节就不再罗嗦重复一次了.大家可以试试先用本章内容中的一些简单介绍,自己使用上一章下载的解决方案来实现一下,做做练习. 首先还是打开数据字典,创建广告内容表 在这里要说明一下的是,大家在对数据字典进行操作后(增.改.删),一定要在数据字典中的"版本"工作表中添加更新历史,以方便后面的维护人员查看(一定要养成一种良好的开发习惯),如下图 然后还是使用ExcelToS

UI基础--UITableView实现仿QQ好友列表页面

需求:类似于QQ好友列表页面的显示,有好友分组,有好友数量,在线人数,vip会员.展开分组时显示分组好友,合并分组时不显示:具体效果图如下: 分析: 1.展开分组时显示分组好友,该功能可以使用显示UITableViewCell的数据即可: 2.分组头可以考虑使用一个headerView来实现: 示例文件结构: 具体实现步骤: 1.自定义数据模型类,由于plist文件中包含了2个字典,所以需要写2个数据模型: 2.自定义cell,属性包括数据模型以及生成可重用cell的方法,由于系统自带的子控件即

Atitit.列表页面and条件查询的实现最佳实践(2)------翻页 分页 控件的实现java .net php

Atitit.列表页面and条件查询的实现最佳实践(2)------翻页 分页 控件的实现java .net php 1. 关于翻页有关的几大控件::搜索框控件,显示表格控件,翻页器,数据源控件.. 1 2. 翻页的显示格式:: 1 2.1. 通常ui--"首页"."上页"."下页"."末页",还要有Goto到指定页 1 2.2. 百度式::...<上一页567891011121314下一页 2 2.3. 综合的页面 首

Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据

1. 1.?配置条件字段@Conditional 1 1 2. 2.?配置条件字段显示类型为[email protected](displayType?=?displayType.rang,?rangStart?=?rang.start,?rangEnd?=?rang.end,op=op.range) 1 3. #----show  condition  page  list 1 4. 提交条件查询表单by dwr 1 5. @filter  ::   set filter condition