界面布局activity_main.xml
继承自自定义基类 BaseActivity
定义的三个 fragment
<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>
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();
}
}