package com.example.slidingmenu.yujing.client.activity.friends; import java.util.HashMap; import java.util.List; import java.util.Map; import org.json.JSONException; import android.app.Activity; import android.app.ProgressDialog; import android.content.ContentValues; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.os.AsyncTask.Status; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; import com.example.slidingmenu.R; import com.example.slidingmenu.yujing.client.activity.ProfileActivity; import com.example.slidingmenu.yujing.client.activity.letter.SendLetterActivity; import com.example.slidingmenu.yujing.client.application.ClientApplication; import com.example.slidingmenu.yujing.client.database.table.Friend; import com.example.slidingmenu.yujing.client.network.HttpClient; import com.example.slidingmenu.yujing.client.network.Request; import com.example.slidingmenu.yujing.client.network.mode.RequestParam; import com.example.slidingmenu.yujing.client.network.mode.friend.GetPeopleResponseParam; import com.example.slidingmenu.yujing.client.utils.Utils; public class AddFriendsActivity extends Activity{ private static final int SEND_LETTER = 55; private ClientApplication clientApplication; private ListView friendsList; private List<? extends Map<String, ?>> list; private AllPeopleAdapter fAdapter; private GetAllPeopleTask mGetAllPeopleTask; private AddFriendTask mAddFriendTask; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add_friends_layout); clientApplication = (ClientApplication) getApplication(); friendsList = (ListView) findViewById(R.id.friends_list); // 向服务器申请数据 RequestParam requestParam = new RequestParam(); requestParam.setUserName(clientApplication.getLoginUserInfo().getString(RequestParam.USER_NAME, null)); requestParam.setPassword(clientApplication.getLoginUserInfo().getString(RequestParam.PASSWORD, null)); requestParam.setRandomKey("1234"); requestParam.setRequestType(RequestParam.GET_ALL_PEOPLE); requestParam.setParams(new String[] { "" }); mGetAllPeopleTask = new GetAllPeopleTask(); mGetAllPeopleTask.execute(requestParam); //事件监听 friendsList.setOnItemClickListener(new ClickListView()); registerForContextMenu(friendsList); } public void setAdapter(){ fAdapter = new AllPeopleAdapter(AddFriendsActivity.this, list); friendsList.setAdapter(fAdapter); } @Override protected void onDestroy() { if(mGetAllPeopleTask != null && mGetAllPeopleTask.getStatus() == Status.RUNNING) { mGetAllPeopleTask.cancel(true); mGetAllPeopleTask = null; } if(mAddFriendTask != null && mAddFriendTask.getStatus() == Status.RUNNING) { mAddFriendTask.cancel(true); mAddFriendTask = null; } super.onDestroy(); } @Override public void onCreateContextMenu( ContextMenu menu, View v, ContextMenuInfo menuInfo ) { menu.add( 0, 0, 0, "私信" ); menu.add( 0, 1, 0, "查看" ); menu.add( 0, 2, 0, "加为好友" ); super.onCreateContextMenu(menu, v, menuInfo); } @SuppressWarnings("unchecked") @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo menuInfo; menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); ContentValues values = (ContentValues) Utils.hashMapToContentValues((HashMap<String, Object>) fAdapter .getItem(menuInfo.position)); switch (item.getItemId()) { // 私信 case 0: Intent intent1 = new Intent(this, SendLetterActivity.class); intent1.putExtra("values", values); startActivityForResult(intent1, SEND_LETTER); break; // 查看 case 1: Intent intent2 = new Intent(); intent2.putExtra("values", values); intent2.setClass(AddFriendsActivity.this, ProfileActivity.class); startActivity(intent2); break; // 加为好友 case 2: addFriend(menuInfo.position, values); break; } return super.onContextItemSelected(item); } private void addFriend(int position, ContentValues values) { RequestParam requestParam = new RequestParam(); requestParam.setUserName(clientApplication.getLoginUserInfo().getString(RequestParam.USER_NAME, null)); requestParam.setPassword(clientApplication.getLoginUserInfo().getString(RequestParam.PASSWORD, null)); requestParam.setRandomKey("1234"); requestParam.setRequestType(RequestParam.ADD_FRIENDS); requestParam.setParams(new String[] {String.valueOf(list.get(position).get(Friend.ID))}); mAddFriendTask = new AddFriendTask(this, new AddFriendTask.OnAddFriend() { @Override public void onAddFriendSuccess(Activity activity, int position) { list.remove(position); fAdapter.notifyDataSetChanged(); } @Override public void onAddFriendFail(Activity activity, int position) { } }); mAddFriendTask.execute(requestParam, values, position); } class GetAllPeopleTask extends AsyncTask<RequestParam, Integer, Boolean>{ private ProgressDialog dialog; @Override protected void onPreExecute() { dialog = ProgressDialog.show(AddFriendsActivity.this, "", getText(R.string.waiting)); super.onPreExecute(); } @Override protected Boolean doInBackground(RequestParam... param) { //如果网络没有连接则更新进度为 网络连接异常 if( !HttpClient.isConnect(AddFriendsActivity.this)) { return false; } RequestParam requestParam = param[0]; String res = Request.request(requestParam.getJSON()); if ("".equals(res)) { return false; } try { GetPeopleResponseParam response = new GetPeopleResponseParam(res); if (response.getResult() != GetPeopleResponseParam.RESULT_SUCCESS) { return false; } list = response.getAllPeople(); return true; } catch (JSONException e) { e.printStackTrace(); } return false; } @Override protected void onPostExecute(Boolean result) { if (result) { setAdapter(); } dialog.dismiss(); dialog = null; super.onPostExecute(result); } } private class ClickListView implements OnItemClickListener{ @SuppressWarnings("unchecked") @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) { Intent intent = new Intent(); intent.putExtra("values", Utils.hashMapToContentValues( (HashMap<String, Object>)fAdapter.getItem(position))); intent.setClass(AddFriendsActivity.this, ProfileActivity.class); startActivity(intent); } } /* class AddFriendTask extends AsyncTask<Object, Integer, Boolean>{ private ProgressDialog dialog; private int position = -1; @Override protected void onPreExecute() { dialog = ProgressDialog.show(AddFriendsActivity.this, "", getText(R.string.waiting)); super.onPreExecute(); } @Override protected Boolean doInBackground(Object... param) { //如果网络没有连接则更新进度为 网络连接异常 if(!HttpClient.isConnect(AddFriendsActivity.this)) { return false; } RequestParam requestParam = (RequestParam) param[0]; ContentValues values = (ContentValues)param[1]; position = (Integer) param[2]; String res = Request.request(requestParam.getJSON()); // 如果请求结果为空字符串,则请求失败 if ("".equals(res)) { return false; } try { ResponseParam response = new ResponseParam(res); if (response.getResult() != ResponseParam.RESULT_SUCCESS) { return false; } Friend.insertFriend(clientApplication.getDatabaseHelper(), values); return true; } catch (JSONException e) { e.printStackTrace(); } return false; } @Override protected void onPostExecute(Boolean result) { dialog.dismiss(); dialog = null; if(result) { list.remove(position); fAdapter.notifyDataSetChanged(); Toast.makeText(AddFriendsActivity.this, "添加好友完成", 0).show(); } super.onPostExecute(result); } }*/ }