andorid导航和切换效果界面设置

界面布局activity_main.xml
<RelativeLayout 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"
    android:background="@color/white"
    tools:context="com.demo.chatmobile.activity.MainActivity" >

    <RadioGroup
        android:id="@+id/radioGroup"
        style="@style/radioStyle"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_alignParentBottom="true"
        android:background="#f2f7f3"
        android:gravity="center_vertical"
        android:orientation="horizontal" >

        <RadioButton
            android:id="@+id/recentTab"
            style="@style/radioStyle"
            android:checked="true"
            android:drawableTop="@drawable/selector_recent"
            android:gravity="center"
            android:paddingLeft="0dp"
            android:paddingRight="0dp"
            android:text="消息" />

        <RadioButton
            android:id="@+id/friendTab"
            style="@style/radioStyle"
            android:drawableTop="@drawable/selector_friend"
            android:gravity="center"
            android:paddingLeft="0dp"
            android:paddingRight="0dp"
            android:text="好友" />

        <RadioButton
            android:id="@+id/noticeTab"
            style="@style/radioStyle"
            android:drawableTop="@drawable/selector_notice"
            android:gravity="center"
            android:paddingLeft="0dp"
            android:paddingRight="0dp"
            android:text="动态" />
    </RadioGroup>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/radioGroup" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:layout_alignBottom="@+id/viewPager"
        android:layout_alignParentLeft="true"
        android:background="@color/div" />

</RelativeLayout>

风格 style.xml

<resources>

    <style name="radioStyle">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_weight">1</item>
        <item name="android:button">@null</item>
        <item name="android:textColor">@color/selector_text_color_main_activity</item>
        <item name="android:gravity">center_horizontal|bottom</item>
        <item name="android:layout_gravity">bottom</item>
        <item name="android:textSize">13sp</item>
        <item name="android:paddingBottom">2dp</item>
    </style>

</resources>


Activity自定义基类 BaseActivity
package com.demo.chatmobile;

import org.json.JSONException;
import org.json.JSONObject;

import com.demo.chatmobile.actionbar.ActionBar;
import com.demo.chatmobile.actionbar.OnActionBarClickListerner;
import com.demo.chatmobile.client.OnReceiveListener;
import com.demo.chatmobile.request.NetRequestConnect;
import com.demo.chatmobile.request.socket.SocketProcessor;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;

public class BaseActivity extends FragmentActivity implements OnActionBarClickListerner {
	private ActionBar actionBar;
	private LinearLayout baseLayout;
	private OnReceiveListener listener;
	private SoundPool mSoundPool;
	private int mTipsSoundId;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		baseLayout = new LinearLayout(this);
		baseLayout.setOrientation(LinearLayout.VERTICAL);
		actionBar = new ActionBar(this);
		actionBar.setOnActionBarListerner(this);
		onCreateActionBar(actionBar);
		listener = (SocketProcessor) NetRequestConnect.getInstance().getNetProcessor();

		mSoundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
		mTipsSoundId = mSoundPool.load(this, R.raw.msg, 1);
	}

	public void playTipsSound() {
		AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
		float audioCurrentVolumn = am.getStreamVolume(AudioManager.STREAM_MUSIC);
		System.out.println("mTipsSoundId = " + mTipsSoundId);
		mSoundPool.play(mTipsSoundId, audioCurrentVolumn, audioCurrentVolumn, 1, 0, 1);
	}

	@Override
	protected void onStart() {
		IntentFilter intentFilter = new IntentFilter();
		intentFilter.addAction("readMessage");
		registerReceiver(mBroadcastReceiver, intentFilter);// 注册接受消息广播
		super.onStart();
	}

	@Override
	protected void onStop() {
		unregisterReceiver(mBroadcastReceiver);
		super.onStop();
	}

	@Override
	public void setContentView(int layoutResID) {
		LayoutInflater flater = LayoutInflater.from(this);
		View view = flater.inflate(layoutResID, null);
		baseLayout.addView(actionBar.getLayout());
		baseLayout.addView(view, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
		super.setContentView(baseLayout);
	}

	@Override
	public void setContentView(View view) {
		baseLayout.addView(actionBar.getLayout());
		baseLayout.addView(view);
		super.setContentView(baseLayout);

	}

	@Override
	public void setContentView(View view, LayoutParams params) {
		baseLayout.addView(actionBar.getLayout());
		baseLayout.addView(view);
		super.setContentView(baseLayout, params);
	}

	public void onCreateActionBar(ActionBar actionBar) {
	}

	public void onActionBarLeftClick() {
	}

	public void onActionBarRightClick(int itemId) {
	}

	public void setActionBarEnable(boolean enable) {
		actionBar.getLayout().setVisibility(enable ? View.VISIBLE : View.GONE);
	}

	public ActionBar getActivityActionBar() {
		return actionBar;
	}

	@Override
	public final void onLeftClick() {
		onActionBarLeftClick();
	}

	@Override
	public final void onRightClick(int itemId) {
		onActionBarRightClick(itemId);
	}

	@Override
	public void startActivity(Intent intent) {
		super.startActivity(intent);
		overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right);
	}

	@Override
	public void startActivityForResult(Intent intent, int requestCode) {
		super.startActivityForResult(intent, requestCode);
		overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right);
	}

	@Override
	public void finish() {
		super.finish();
		overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);
	}

	public void getMessage(String message) {
	}

	BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
		@Override
		public void onReceive(Context context, Intent intent) {
			String read = intent.getStringExtra("message");

			JSONObject jobj = null;
			try {
				jobj = new JSONObject(read);
			} catch (JSONException e) {
				e.printStackTrace();
			}
			if (jobj != null) {
				int type = jobj.optInt("type");
				if (type == 1 && listener != null) {
					// 如果类型是1
					listener.onReadReceive(read);
				} else if (type == 2) {
					getMessage(read);
				}
			}
		}

	};
}

继承自自定义基类 BaseActivity

package com.demo.chatmobile.activity;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONException;
import org.json.JSONObject;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;

import com.demo.chatmobile.BaseActivity;
import com.demo.chatmobile.R;
import com.demo.chatmobile.actionbar.ActionBar;
import com.demo.chatmobile.adapter.MainViewPagerAdaper;
import com.demo.chatmobile.bean.User;
import com.demo.chatmobile.client.RequestCmd;
import com.demo.chatmobile.fragment.FriendFragment;
import com.demo.chatmobile.fragment.NoticeFragment;
import com.demo.chatmobile.fragment.RecentFragment;
import com.demo.chatmobile.logic.FriendLogic;
import com.demo.chatmobile.request.OnNetResponse;
import com.demo.chatmobile.util.UserUtil;

public class MainActivity extends BaseActivity {
	private ViewPager mViewPager;
	private RadioGroup mRadioGroup;
	private List<Fragment> mPagers;
	private MainViewPagerAdaper mViewPagerAdapter;
	private RecentFragment mRecentFragment;
	private FriendFragment mFriendFragment;
	private NoticeFragment mNoticeFragment;
	private boolean mHasInit;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_main);
		setActionBarEnable(true);
		mViewPager = (ViewPager) findViewById(R.id.viewPager);
		mRadioGroup = (RadioGroup) findViewById(R.id.radioGroup);
		mPagers = new ArrayList<Fragment>();
		mViewPagerAdapter = new MainViewPagerAdaper(getSupportFragmentManager(), mPagers);
		mRecentFragment = new RecentFragment();
		mFriendFragment = new FriendFragment();
		mNoticeFragment = new NoticeFragment();
		mPagers.add(mRecentFragment);
		mPagers.add(mFriendFragment);
		mPagers.add(mNoticeFragment);
		mViewPager.setAdapter(mViewPagerAdapter);
		mViewPager.setOffscreenPageLimit(2);

		mRadioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
				switch (checkedId) {
				case R.id.recentTab:
					mViewPager.setCurrentItem(0);
					break;
				case R.id.friendTab:
					mViewPager.setCurrentItem(1);
					break;
				case R.id.noticeTab:
					mViewPager.setCurrentItem(2);
					break;
				}
			}
		});

		mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
			@Override
			public void onPageSelected(int position) {
				((RadioButton) mRadioGroup.getChildAt(position)).setChecked(true);
			}

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg) {
			}

			@Override
			public void onPageScrollStateChanged(int arg0) {
			}
		});

		Intent intent = new Intent(this, LoginActivity.class);
		startActivity(intent);
	}

	@Override
	public void onCreateActionBar(ActionBar actionBar) {
		super.onCreateActionBar(actionBar);
		actionBar.setTitle("用户");
	}

	@Override
	protected void onResume() {
		super.onResume();
		if (UserUtil.isLogin()) {
			if (!mHasInit) {
				mHasInit = true;
				getActivityActionBar().setTitle(UserUtil.getUser().getUserName());
				mRecentFragment.onLogin();
				mFriendFragment.onLogin();
				mNoticeFragment.onLogin();
			}
		}
	}

	@Override
	public void getMessage(String message) {
		System.out.println("收到类型2的广播: " + message);
		try {
			JSONObject jobj = new JSONObject(message);
			if (jobj != null) {
				int cmd = jobj.optInt("cmd");
				switch (cmd) {
				case RequestCmd.ONLINE_FRIEND:
					FriendLogic.getFriend(UserUtil.getUser().getUid(), new OnNetResponse<List<User>>() {
						@Override
						public void onRespond(List<User> result, int code, String message) {
							mFriendFragment.updateFriends(result);
							mRecentFragment.updateOnlineUser(result);
						}
					});
					break;
				case RequestCmd.ADD_FRIEND_NOTICE:
					mNoticeFragment.updateNotices();
					break;
				case RequestCmd.CONFIRM_FRIEND_NOTICE:
					FriendLogic.getFriend(UserUtil.getUser().getUid(), new OnNetResponse<List<User>>() {
						@Override
						public void onRespond(List<User> result, int code, String message) {
							mFriendFragment.updateFriends(result);
							mRecentFragment.updateOnlineUser(result);
						}
					});
					break;
				case RequestCmd.SEND_CHAT:
					mRecentFragment.updateRecentMessage();
					playTipsSound();
					break;
				}
			}
		} catch (JSONException e) {
			e.printStackTrace();
		}

	}
}

viewpager适配器 MainViewPagerAdapter

package com.demo.chatmobile.adapter;

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class MainViewPagerAdaper extends FragmentPagerAdapter {
	private List<Fragment> mPagers;

	public MainViewPagerAdaper(FragmentManager fm, List<Fragment> pagers) {
		super(fm);
		this.mPagers = pagers;
	}

	@Override
	public Fragment getItem(int arg0) {
		return mPagers.get(arg0);
	}

	@Override
	public int getCount() {
		return mPagers.size();
	}
}

定义的三个 fragment

package com.demo.chatmobile.fragment;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

import com.demo.chatmobile.BaseFragment;
import com.demo.chatmobile.R;
import com.demo.chatmobile.activity.ChatActivity;
import com.demo.chatmobile.adapter.FriendListAdapter;
import com.demo.chatmobile.bean.Friend;
import com.demo.chatmobile.bean.User;
import com.demo.chatmobile.bean.UserMessage;
import com.demo.chatmobile.db.DBHelper;
import com.demo.chatmobile.logic.Chat;
import com.demo.chatmobile.logic.FriendLogic;
import com.demo.chatmobile.request.OnNetResponse;
import com.demo.chatmobile.util.UserUtil;

public class RecentFragment extends BaseFragment implements OnItemClickListener {
	private ListView mListView;
	private FriendListAdapter mAdapter;
	private LinkedHashMap<String, Friend> mHashMap;
	private View mView;

	@SuppressLint("InflateParams")
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		LayoutInflater inflater = LayoutInflater.from(getActivity());
		mView = inflater.inflate(R.layout.fragment_recent, null);
		mListView = (ListView) mView.findViewById(R.id.friendList);
		mHashMap = new LinkedHashMap<String, Friend>();
		mAdapter = new FriendListAdapter();
		mListView.setAdapter(mAdapter);
		mListView.setOnItemClickListener(this);
	}

	public void initRecentDatas() {
		DBHelper dbHelper = new DBHelper(getActivity(), "chatmobile", null, 1);
		SQLiteDatabase db = dbHelper.getReadableDatabase();
		Cursor c = db
				.rawQuery(
						"SELECT tb_friend.uid,tb_friend.fid,fname FROM tb_friend,tb_recent WHERE tb_friend.uid=tb_recent.uid AND tb_friend.fid=tb_recent.fid AND tb_friend.uid='"
								+ UserUtil.getUser().getUid() + "'", null);
		List<Friend> list = new ArrayList<Friend>();
		while (c.moveToNext()) {
			Friend friend = new Friend();
			friend.uid = c.getString(0);
			friend.fid = c.getString(1);
			User user = new User();
			user.setUid(friend.fid);
			user.setUserName(c.getString(2));
			friend.friend = user;
			mHashMap.put(friend.fid, friend);
			list.add(friend);
		}
		mAdapter.refreshDatas(list);
		c.close();
		db.close();
	}

	public void updateRecentMessage() {
		Chat.getUnReadMessage(UserUtil.getUser().getUid(), new OnNetResponse<List<Friend>>() {
			@Override
			public void onRespond(List<Friend> result, int code, String message) {
				for (int i = 0; i < result.size(); i++) {
					if (mHashMap.containsKey(result.get(i).fid)) {
						mHashMap.remove(result.get(i).fid);
						mHashMap.put(result.get(i).fid, result.get(i));
					} else {
						mHashMap.put(result.get(i).fid, result.get(i));
					}
				}
				Iterator<Entry<String, Friend>> iter = mHashMap.entrySet().iterator();
				List<Friend> list = new ArrayList<Friend>();
				while (iter.hasNext()) {
					Entry<String, Friend> entry = (Entry<String, Friend>) iter.next();
					Friend friend = entry.getValue();
					list.add(friend);
				}
				mAdapter.refreshDatas(list);

				DBHelper dbHelper = new DBHelper(getActivity(), "chatmobile", null, 1);
				SQLiteDatabase db = dbHelper.getWritableDatabase();
				for (int i = 0; i < result.size(); i++) {
					Friend friend = result.get(i);
					for (int j = 0; j < friend.userMessage.size(); j++) {
						UserMessage userMessage = friend.userMessage.get(j);
						try {
							db.execSQL("INSERT INTO tb_message VALUES(" + userMessage.id + ", '" + userMessage.fromUid
									+ "', '" + userMessage.toUid + "', '" + userMessage.message + "', "
									+ userMessage.time + ")");
						} catch (Exception e) {
						}
					}
					try {
						db.execSQL("INSERT INTO tb_recent VALUES('" + UserUtil.getUser().getUid() + "','" + friend.fid
								+ "'," + System.currentTimeMillis() + ")");
					} catch (Exception e) {
						db.execSQL("UPDATE tb_recent SET recent_time=" + System.currentTimeMillis() + " WHERE uid='"
								+ UserUtil.getUser().getUid() + "' AND fid='" + friend.fid + "'");
					}
				}
				db.close();
			}
		});
	}

	public void updateOnlineUser(List<User> users) {
		for (int i = 0; i < users.size(); i++) {
			Friend friend = mHashMap.get(users.get(i).getUid());
			if (friend != null) {
				friend.friend = users.get(i);
			}
		}
		Iterator<Entry<String, Friend>> iter = mHashMap.entrySet().iterator();
		List<Friend> list = new ArrayList<Friend>();
		while (iter.hasNext()) {
			Entry<String, Friend> entry = (Entry<String, Friend>) iter.next();
			Friend friend = entry.getValue();
			list.add(friend);
		}
		mAdapter.refreshDatas(list);
	}

	@Override
	public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
		ViewGroup p = (ViewGroup) mView.getParent();
		if (p != null) {
			p.removeAllViewsInLayout();
		}
		return mView;
	}

	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
		Friend friend = mAdapter.getItem(position);
		if (friend.userMessage != null && friend.userMessage.size() > 0) {
			int messageId = friend.userMessage.get(friend.userMessage.size() - 1).id;
			Chat.setReadMessageId(UserUtil.getUser().getUid(), friend.fid, messageId);
		}
		friend.userMessage = null;
		mAdapter.notifyDataSetChanged();
		Intent intent = new Intent(getActivity(), ChatActivity.class);
		intent.putExtra("uid", mAdapter.getItem(position).fid);
		intent.putExtra("userName", mAdapter.getItem(position).friend.getUserName());
		getActivity().startActivity(intent);
	}

	@Override
	public void onLogin() {
		if (UserUtil.isLogin()) {
			initRecentDatas();
		}
	}
	
	@Override
	public void onResume() {
		super.onResume();
		updateRecentMessage();
		FriendLogic.getFriend(UserUtil.getUser().getUid(), new OnNetResponse<List<User>>() {
			@Override
			public void onRespond(List<User> result, int code, String message) {
				updateOnlineUser(result);
			}
		});
	}
}


package com.demo.chatmobile.fragment;

import java.util.ArrayList;
import java.util.List;

import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import com.demo.chatmobile.BaseFragment;
import com.demo.chatmobile.R;
import com.demo.chatmobile.activity.ChatActivity;
import com.demo.chatmobile.adapter.FriendListAdapter;
import com.demo.chatmobile.bean.Friend;
import com.demo.chatmobile.bean.User;
import com.demo.chatmobile.db.DBHelper;
import com.demo.chatmobile.logic.FriendLogic;
import com.demo.chatmobile.request.OnNetResponse;
import com.demo.chatmobile.util.UserUtil;

public class FriendFragment extends BaseFragment implements OnItemClickListener {
	private View mView;
	private ListView mListView;
	private EditText mSearchEditText;
	private FriendListAdapter mAdapter;
	private List<Friend> mList;
	private Button mSearchButton;
	private boolean mIsSearch;

	@SuppressLint("InflateParams")
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		LayoutInflater inflater = LayoutInflater.from(getActivity());
		mView = inflater.inflate(R.layout.fragment_friend, null);
		mListView = (ListView) mView.findViewById(R.id.friendList);
		mSearchEditText = (EditText) mView.findViewById(R.id.searchFriendEditText);
		mSearchButton = (Button) mView.findViewById(R.id.searchButton);

		mList = new ArrayList<Friend>();
		mAdapter = new FriendListAdapter();
		mListView.setAdapter(mAdapter);

		mSearchButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				if (UserUtil.isLogin()) {
					FriendLogic.searchFriend(mSearchEditText.getText().toString(), new OnNetResponse<List<User>>() {
						@Override
						public void onRespond(List<User> result, int code, String message) {
							List<Friend> list = new ArrayList<Friend>();
							for (int i = 0; i < result.size(); i++) {
								Friend friend = new Friend();
								friend.fid = result.get(i).getUid();
								friend.friend = result.get(i);
								list.add(friend);
							}
							mIsSearch = true;
							mAdapter.refreshDatas(list);
						}
					});
				}
			}
		});

		mSearchEditText.setOnKeyListener(new OnKeyListener() {

			@Override
			public boolean onKey(View v, int keyCode, KeyEvent event) {
				if (mSearchEditText.getText().toString().equals("")) {
					mIsSearch = false;
					mAdapter.refreshDatas(mList);
				}
				return false;
			}
		});

		mListView.setOnItemClickListener(this);
	}

	public void updateFriends(List<User> result) {
		mList.clear();
		DBHelper dbHelper = new DBHelper(getActivity(), "chatmobile", null, 1);
		SQLiteDatabase db = dbHelper.getWritableDatabase();
		db.execSQL("DELETE FROM tb_friend");
		for (int i = 0; i < result.size(); i++) {
			Friend friend = new Friend();
			friend.fid = result.get(i).getUid();
			friend.friend = result.get(i);
			mList.add(friend);
			db.execSQL("INSERT INTO tb_friend VALUES('" + UserUtil.getUser().getUid() + "','" + friend.fid + "','"
					+ friend.friend.getUserName() + "',0)");
		}
		db.close();
		mIsSearch = false;
		mAdapter.refreshDatas(mList);
	}

	public void updateFriends() {
		FriendLogic.getFriend(UserUtil.getUser().getUid(), new OnNetResponse<List<User>>() {
			@Override
			public void onRespond(List<User> result, int code, String message) {
				updateFriends(result);
			}
		});
	}

	@Override
	public void onResume() {
		super.onResume();
		updateFriends();
	}

	@Override
	public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
		ViewGroup p = (ViewGroup) mView.getParent();
		if (p != null) {
			p.removeAllViewsInLayout();
		}
		return mView;
	}

	@Override
	public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
		if (mIsSearch) {
			new AlertDialog.Builder(getActivity()).setTitle("提示").setMessage("是否将TA加为好友?")
					.setPositiveButton("确定", new DialogInterface.OnClickListener() {
						@Override
						public void onClick(DialogInterface dialog, int which) {
							if (UserUtil.isLogin()) {
								FriendLogic.addFriend(UserUtil.getUser().getUid(), mAdapter.getItem(position).fid,
										new OnNetResponse<Friend>() {
											@Override
											public void onRespond(Friend result, int code, String message) {
												if (code == 0) {
													Toast.makeText(getActivity(), "发送成功", Toast.LENGTH_SHORT).show();
												} else {
													Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();
												}
											}
										});
							}
						}
					}).setNegativeButton("取消", null).show();
		} else {
			Intent intent = new Intent(getActivity(), ChatActivity.class);
			intent.putExtra("uid", mAdapter.getItem(position).fid);
			intent.putExtra("userName", mAdapter.getItem(position).friend.getUserName());
			getActivity().startActivity(intent);
		}
	}
}

package com.demo.chatmobile.fragment;

import java.util.List;

import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;

import com.demo.chatmobile.BaseFragment;
import com.demo.chatmobile.R;
import com.demo.chatmobile.adapter.AddFriendListAdapter;
import com.demo.chatmobile.bean.Friend;
import com.demo.chatmobile.bean.User;
import com.demo.chatmobile.logic.FriendLogic;
import com.demo.chatmobile.request.OnNetResponse;
import com.demo.chatmobile.util.UserUtil;

public class NoticeFragment extends BaseFragment implements OnItemClickListener {
	private View mView;
	private ListView mListView;
	private AddFriendListAdapter mAdapter;

	@SuppressLint("InflateParams")
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		LayoutInflater inflater = LayoutInflater.from(getActivity());
		mView = inflater.inflate(R.layout.fragment_notice, null);
		mListView = (ListView) mView.findViewById(R.id.noticeListView);
		mAdapter = new AddFriendListAdapter();
		mListView.setAdapter(mAdapter);
		mListView.setOnItemClickListener(this);
	}

	public void updateNotices() {
		if (UserUtil.isLogin()) {
			FriendLogic.getAddFriend(UserUtil.getUid(getActivity()), new OnNetResponse<List<User>>() {
				@Override
				public void onRespond(List<User> result, int code, String message) {
					mAdapter.refreshDatas(result);
				}
			});
		}
	}

	@Override
	public void onResume() {
		super.onResume();
		updateNotices();
	}

	@Override
	public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
		ViewGroup p = (ViewGroup) mView.getParent();
		if (p != null) {
			p.removeAllViewsInLayout();
		}
		return mView;
	}

	@Override
	public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
		new AlertDialog.Builder(getActivity()).setTitle("提示").setMessage("是否将TA加为好友?")
				.setPositiveButton("同意", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						if (UserUtil.isLogin()) {
							FriendLogic.confirmFriend(UserUtil.getUser().getUid(), mAdapter.getItem(position).getUid(),
									new OnNetResponse<Friend>() {
										@Override
										public void onRespond(Friend result, int code, String message) {
											if (code == -1) {
												Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();
											} else {
												Toast.makeText(getActivity(),
														"成功添加" + mAdapter.getItem(position).getUserName() + "为好友",
														Toast.LENGTH_SHORT).show();
											}
											mAdapter.removeData(position);
										}
									});
						}
					}
				}).setNegativeButton("拒绝", new OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						if (UserUtil.isLogin()) {
							FriendLogic.refuseFriend(UserUtil.getUser().getUid(), mAdapter.getItem(position).getUid(),
									new OnNetResponse<Friend>() {
										@Override
										public void onRespond(Friend result, int code, String message) {
											Toast.makeText(getActivity(), "已经拒绝", Toast.LENGTH_SHORT).show();
											mAdapter.removeData(position);
										}
									});
						}
					}
				}).show();
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值