package cn.rongcloud.im.ui.activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Collections; import java.util.Comparator; import java.util.Date; import cn.rongcloud.im.R; import cn.rongcloud.im.SealAppContext; import cn.rongcloud.im.SealUserInfoManager; import cn.rongcloud.im.db.Friend; import cn.rongcloud.im.server.broadcast.BroadcastManager; import cn.rongcloud.im.server.network.http.HttpException; import cn.rongcloud.im.server.pinyin.CharacterParser; import cn.rongcloud.im.server.response.AgreeFriendsResponse; import cn.rongcloud.im.server.response.UserRelationshipResponse; import cn.rongcloud.im.server.utils.CommonUtils; import cn.rongcloud.im.server.utils.NToast; import cn.rongcloud.im.server.widget.LoadDialog; import cn.rongcloud.im.ui.adapter.NewFriendListAdapter; public class NewFriendListActivity extends BaseActivity implements NewFriendListAdapter.OnItemButtonClick, View.OnClickListener { private static final int GET_ALL = 11; private static final int AGREE_FRIENDS = 12; public static final int FRIEND_LIST_REQUEST_CODE = 1001; private ListView shipListView; private NewFriendListAdapter adapter; private String friendId; private TextView isData; private UserRelationshipResponse userRelationshipResponse; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new_friendlist); initView(); if (!CommonUtils.isNetworkConnected(mContext)) { NToast.shortToast(mContext, R.string.check_network); return; } LoadDialog.show(mContext); request(GET_ALL); adapter = new NewFriendListAdapter(mContext); shipListView.setAdapter(adapter); } protected void initView() { setTitle(R.string.new_friends); shipListView = (ListView) findViewById(R.id.shiplistview); isData = (TextView) findViewById(R.id.isData); Button rightButton = getHeadRightButton(); rightButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.de_address_new_friend)); rightButton.setOnClickListener(this); } @Override public Object doInBackground(int requestCode, String id) throws HttpException { switch (requestCode) { case GET_ALL: return action.getAllUserRelationship(); case AGREE_FRIENDS: return action.agreeFriends(friendId); } return super.doInBackground(requestCode, id); } @Override @SuppressWarnings("unchecked") public void onSuccess(int requestCode, Object result) { if (result != null) { switch (requestCode) { case GET_ALL: userRelationshipResponse = (UserRelationshipResponse) result; if (userRelationshipResponse.getResult().size() == 0) { isData.setVisibility(View.VISIBLE); LoadDialog.dismiss(mContext); return; } Collections.sort(userRelationshipResponse.getResult(), new Comparator<UserRelationshipResponse.ResultEntity>() { @Override public int compare(UserRelationshipResponse.ResultEntity lhs, UserRelationshipResponse.ResultEntity rhs) { Date date1 = stringToDate(lhs); Date date2 = stringToDate(rhs); if (date1.before(date2)) { return 1; } return -1; } }); adapter.removeAll(); adapter.addData(userRelationshipResponse.getResult()); adapter.notifyDataSetChanged(); adapter.setOnItemButtonClick(this); LoadDialog.dismiss(mContext); break; case AGREE_FRIENDS: AgreeFriendsResponse afres = (AgreeFriendsResponse) result; if (afres.getCode() == 200) { UserRelationshipResponse.ResultEntity bean = userRelationshipResponse.getResult().get(index); SealUserInfoManager.getInstance().addFriend(new Friend(bean.getUser().getId(), bean.getUser().getNickname(), Uri.parse(bean.getUser().getPortraitUri()), bean.getDisplayName(), String.valueOf(bean.getStatus()), null, null, null, CharacterParser.getInstance().getSpelling(bean.getUser().getNickname()), CharacterParser.getInstance().getSpelling(bean.getDisplayName()))); // 通知好友列表刷新数据 NToast.shortToast(mContext, R.string.agreed_friend); LoadDialog.dismiss(mContext); BroadcastManager.getInstance(mContext).sendBroadcast(SealAppContext.UPDATE_FRIEND); request(GET_ALL); //刷新 UI 按钮 } } } } @Override public void onFailure(int requestCode, int state, Object result) { switch (requestCode) { case GET_ALL: break; } } @Override protected void onDestroy() { if (adapter != null) { adapter = null; } super.onDestroy(); } private int index; @Override public boolean onButtonClick(int position, View view, int status) { index = position; switch (status) { case 11: //收到了好友邀请 if (!CommonUtils.isNetworkConnected(mContext)) { NToast.shortToast(mContext, R.string.check_network); break; } LoadDialog.show(mContext); // friendId = null; friendId = userRelationshipResponse.getResult().get(position).getUser().getId(); request(AGREE_FRIENDS); break; case 10: // 发出了好友邀请 break; case 21: // 忽略好友邀请 break; case 20: // 已是好友 break; case 30: // 删除了好友关系 break; } return false; } private Date stringToDate(UserRelationshipResponse.ResultEntity resultEntity) { String updatedAt = resultEntity.getUpdatedAt(); String updatedAtDateStr = updatedAt.substring(0, 10) + " " + updatedAt.substring(11, 16); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date updateAtDate = null; try { updateAtDate = simpleDateFormat.parse(updatedAtDateStr); } catch (ParseException e) { e.printStackTrace(); } return updateAtDate; } @Override public void onClick(View v) { Intent intent = new Intent(NewFriendListActivity.this, SearchFriendActivity.class); startActivityForResult(intent, FRIEND_LIST_REQUEST_CODE); } }