Silicon Valley Social Networking 15-group details, Silicon Valley Social Networking 15 --

Source: Internet
Author: User

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 ();}});}}});}}

  

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.