Silicon Valley Social Networking 15-group details, Silicon Valley Social Networking 15 --
1) Page Layout
<? 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" android: layout_height = "match_parent" xmlns: app = "http://schemas.android.com/apk/res-auto" android: orientation = "vertical"> <com. hyphenate. easeui. widget. easeTitleBar app: titleBarTitle = "group details" android: layout_width = "match_parent" android: layout_height = "wrap_content"> </com. hyphenate. easeui. widget. easeTitleBar> <GridView android: id = "@ + id/gv_group_detail" android: layout_width = "match_parent" android: numColumns = "4" android: horizontalSpacing = "10dp" android: verticalSpacing = "10dp" android: layout_weight = "1" android: layout_height = "0dp"> </GridView> <Button android: id = "@ + id/bt_group_detail" android: text = "" android: textSize = "25sp" android: layout_margin = "5dp" android: textColor = "@ android: color/white" android: background = "@ android: color/holo_red_light "android: layout_width =" match_parent "android: layout_height =" wrap_content "/> </LinearLayout>
Group details .png
Delete model group details. PNG
Group members details .png
2) obtain the passed data
// Obtain the passed parameter private void getData () {// obtain the passed group idString groupId = getIntent (). getStringExtra (Constant. GROUP_ID); // check if (groupId = null) {finish (); return;} else {// obtain group information mGroup = EMClient. getInstance (). groupManager (). getGroup (groupId );}}
3) initialize the button display
// Display private void initButtonDisplay () {// display // determine whether it is a group master if (EMClient. getInstance (). getCurrentUser (). equals (mGroup. getOwner () {// update display btn_exit_group.setText ("disband group"); // Click Event btn_exit_group.setOnClickListener (new View. onClickListener () {@ Overridepublic void onClick (View v) Route cute (new Runnable () {@ Overridepublic void run () {// connect to try {// connect to EMClient. getInstance (). groupManager (). destroyGroup (mGroup. getGroupId (); // send the disband group broadcast exitGroupBroadCast (); // The message runOnUiThread (new Runnable () {@ Overridepublic void run () {Toast. makeText (GroupDetailActivity. this, "group disbanded successfully", Toast. LENGTH_SHORT ). show (); // destroy the current page finish () ;}) ;}catch (HyphenateException e) {e. printStackTrace (); // The message runOnUiThread (new Runnable () {@ Overridepublic void run () {Toast. makeText (GroupDetailActivity. this, "failed to disband the group", Toast. LENGTH_SHORT ). show () ;}}) ;}}}) ;}}};} else {// group member btn_exit_group.setText (" "); // click the event btn_exit_group.setOnClickListener (new View. onClickListener () {@ Overridepublic void onClick (View v) {// net model.getinstace().getgolbalthreadpool(cmd.exe cute (new Runnable () {@ Overridepublic void run () {try {EMClient. getInstance (). groupManager (). leaveGroup (mGroup. getGroupId (); // send broadcast exitGroupBroadCast (); // The message runOnUiThread (new Runnable () {@ Overridepublic void run () {Toast. makeText (GroupDetailActivity. this, "the group is successfully withdrawn", Toast. LENGTH_SHORT ). show (); // destroy the current page finish () ;}) ;}catch (HyphenateException e) {e. printStackTrace (); runOnUiThread (new Runnable () {@ Overridepublic void run () {Toast. makeText (GroupDetailActivity. this, "failed to return to the group", Toast. LENGTH_SHORT ). show ();}});}}});}});}}
4) withdraw and disband the group
Send out-of-group Broadcast
// Disband and ungroup broadcast private void exitGroupBroadCast () {// send broadcast Intent intent = new Intent (Constant. EXIT_GROUP); // transmits the group id parameter intent. putExtra (Constant. GROUP_ID, mGroup. getGroupId (); // send mLBM. sendBroadcast (intent );}
5) initialize the Gridview
// Initialize gridviewprivate void initGridview () {// if you are a group owner or your group is public, you can add and delete group members boolean mIsCanModify = EMClient. getInstance (). getCurrentUser (). equals (mGroup. getOwner () | mGroup. isPublic (); // create the adapter mGroupDetailAdapter = new GroupDetailAdapter (GroupDetailActivity. this, mIsCanModify, mOnGroupDetailListener); // Add it to gridviewgv_member_list.setAdapter (mGroupDetailAdapter );}
6) GridView Adapter
Public class GroupDetailAdapter extends BaseAdapter {private Context mContext; private boolean mIsCanModify; // indicates that you can add or delete a friend private boolean mIsDeleteModel; // whether the value is in Delete mode. true: delete mode. false: non-delete mode private List <UserInfo> mUsers = new ArrayList <> (); private OnGroupDetailListener mOnGroupDetailListener; private final String mCurrentUser; public GroupDetailAdapter (Context context, boolean isCanModify, OnGroup DetailListener onGroupDetailListener) {mContext = context; mIsCanModify = isCanModify; mOnGroupDetailListener = onGroupDetailListener; mCurrentUser = EMClient. getInstance (). getCurrentUser ();} private void initUsers () {UserInfo add = new UserInfo ("add"); UserInfo delete = new UserInfo ("delete"); mUsers. add (delete); mUsers. add (0, add);} // refresh method public void refresh (List <UserInfo> users) {// check If (users! = Null & users. size ()> = 0) {mUsers. clear (); initUsers (); mUsers. addAll (0, users) ;}// refresh the notifyDataSetChanged () ;}// obtain the current mode public boolean ismIsDeleteModel () {return mIsDeleteModel ;} // set the current mode public void setmIsDeleteModel (boolean mIsDeleteModel) {this. mIsDeleteModel = mIsDeleteModel;} @ Override public int getCount () {return mUsers = null? 0: mUsers. size () ;}@ Override public Object getItem (int position) {return mUsers. get (position) ;}@ Override public long getItemId (int position) {return position ;}@ Override public View getView (final int position, View convertView, ViewGroup parent) {// create or obtain viewHolder ViewHolder holder = null; if (convertView = null) {holder = new ViewHolder (); convertView = View. inflate (mContext, R. layout. Item_group_detail, null); holder. photo = (ImageView) convertView. findViewById (R. id. iv_member_photo); holder. name = (TextView) convertView. findViewById (R. id. TV _member_name); holder. delete = (ImageView) convertView. findViewById (R. id. iv_member_delete); convertView. setTag (holder);} else {holder = (ViewHolder) convertView. getTag (); if (position! = GetCount ()-1 & position! = GetCount ()-2) {if (holder. name. getVisibility () = View. INVISIBLE) {holder = new ViewHolder (); convertView = View. inflate (mContext, R. layout. item_group_detail, null); holder. photo = (ImageView) convertView. findViewById (R. id. iv_member_photo); holder. name = (TextView) convertView. findViewById (R. id. TV _member_name); holder. delete = (ImageView) convertView. findViewById (R. id. iv_member_delete); conve RtView. setTag (holder) ;}}// display data // determine whether the permission is modified if (mIsCanModify) {// modify mode // 1 Listen to the event if (position = getCount ()-1) {// minus position holder. photo. setOnClickListener (new View. onClickListener () {@ Override public void onClick (View v) {// if the current mode is not deleted if (! MIsDeleteModel) {// modify it to the deletion mode: mIsDeleteModel = true; // update the notifyDataSetChanged () ;}});} else if (position = getCount ()-2) {// The Position of the plus sign is holder. photo. setOnClickListener (new View. onClickListener () {@ Override public void onClick (View v) {// logic complexity no longer this operation mOnGroupDetailListener. onAddMembers () ;}}) ;}else {// Click Event holder for group members. delete. setOnClickListener (new View. onClickListener () {@ Override public vo Id onClick (View v) {// no longer this operation mOnGroupDetailListener. onDeleteMember (mUsers. get (position) ;}}) ;}// 2 display layout if (position = getCount ()-1) {// minus sign if (mIsDeleteModel) {convertView. setVisibility (View. INVISIBLE);} else {convertView. setVisibility (View. VISIBLE); // sets the data holder. photo. setImageResource (R. drawable. em_smiley_minus_btn_pressed); holder. delete. setVisibility (View. GONE); holder. name. setVis Ibility (View. INVISIBLE) ;}} else if (position = getCount ()-2) {// plus sign if (mIsDeleteModel) {convertView. setVisibility (View. INVISIBLE);} else {convertView. setVisibility (View. VISIBLE); holder. photo. setImageResource (R. drawable. em_smiley_add_btn_pressed); holder. delete. setVisibility (View. GONE); holder. name. setVisibility (View. INVISIBLE) ;}} else {// get the current item data UserInfo user = mUsers. get (position ); ConvertView. setVisibility (View. VISIBLE); holder. name. setVisibility (View. VISIBLE); holder. photo. setVisibility (View. VISIBLE); holder. name. setText (user. getName (); holder. photo. setImageResource (R. drawable. em_default_avatar); if (mIsDeleteModel &&! MCurrentUser. equals (user. getHxId () {// set the layout to holder. delete. setVisibility (View. VISIBLE);} else {holder. delete. setVisibility (View. GONE) ;}} else {// display data if (position = getCount ()-1 | position = getCount ()-2) {convertView. setVisibility (View. INVISIBLE);} else {convertView. setVisibility (View. VISIBLE); // get the current item data UserInfo userInfo = mUsers. get (position); holder. name. setText (userInfo. getName (); holder. photo. setImageResource (R. drawable. em_default_avatar); holder. delete. setVisibility (View. GONE) ;}}// return view return convertView;} static class ViewHolder {TextView name; ImageView photo; ImageView delete ;} public interface OnGroupDetailListener {// Method for adding a member void onAddMembers (); // Method for deleting a group member void onDeleteMember (UserInfo user );}}
7) retrieve all group members from the email service
Private void getMembersFromHxServer () {modle.getinstance().getglobalthreadpool(cmd.exe cute (new Runnable () {@ Override public void run () {try {EMGroup groupFromServer = EMClient. getInstance (). groupManager (). getGroupFromServer (mGroup. getGroupId (); List <String> members = groupFromServer. getMembers (); if (members! = Null & members. size ()> = 0) {mUserss = new ArrayList <UserInfo> (); for (String member: members) {UserInfo userInfo = new UserInfo (member); mUserss. add (userInfo) ;}} runOnUiThread (new Runnable () {@ Override public void run () {mGroupDetailAdapter. refresh (mUserss); // Toast. makeText (groupdetailaciti.pdf. this, "loaded successfully", Toast. LENGTH_SHORT ). show () ;}) ;}catch (HyphenateException e) {e. printStackTrace ();}}});}
8) GridView adapter callback Interface
(1) Deleting group members
Model.getinstace().getgolbalthreadpool(cmd.exe cute (new Runnable () {@ Overridepublic void run () {try {// Delete this member EMClient from the email Center Server. getInstance (). groupManager (). removeUserFromGroup (group. getGroupId (), user. getHxId (); // obtain the group members from the email center again and refresh the getUsersFromHxServer (); runOnUiThread (new Runnable () {@ Overridepublic void run () {Toast. makeText (GroupDetailActivity. this, "this member is successfully deleted", Toast. LENGTH_SHORT ). show () ;}) ;}catch (HyphenateException e) {e. printStackTrace (); runOnUiThread (new Runnable () {@ Overridepublic void run () {Toast. makeText (GroupDetailActivity. this, "failed to delete this member", Toast. LENGTH_SHORT ). show ();}});}}});
(2) Add group members
Public void onAddMembers () {// jump to the select contact page Intent intent = new Intent (GroupDetailActivity. this, PickContactsActivity. class); intent = intent. putExtra (Constant. GROUP_ID, group. getGroupId (); startActivityForResult (intent, 0) ;}@ Overrideprotected void onActivityResult (int requestCode, int resultCode, Intent data) {super. onActivityResult (requestCode, resultCode, data); if (resultCode = RESULT_ OK) {// obtain the returned contact information final String [] memberses = data. getStringArrayExtra ("members" has been named model.getinstace().getgolbalthreadpool(cmd.exe cute (new Runnable () {@ Overridepublic void run () {try {// Add group members to the EMClient group. getInstance (). groupManager (). addUsersToGroup (group. getGroupId (), memberses); // access the server to refresh the page // getUsersFromHxServer (); runOnUiThread (new Runnable () {@ Overridepublic void run () {Toast. makeText (GroupDetailActivity. this, "successfully sent the invitation to join this group", Toast. LENGTH_SHORT ). show () ;}) ;}catch (HyphenateException e) {e. printStackTrace (); runOnUiThread (new Runnable () {@ Overridepublic void run () {Toast. makeText (GroupDetailActivity. this, "failed to send the invitation to join this group", Toast. LENGTH_SHORT ). show ();}});}}});}}