1 package cc.minsnail.fragment;
3 import android.app.Fragment;
4 import android.content.Context;
5 import android.content.Intent;
6 import android.os.Bundle;
7 import android.os.Handler;
8 import android.os.Message;
9 import android.os.RemoteException;
10 import android.support.annotation.Nullable;
11 import android.view.LayoutInflater;
12 import android.view.View;
13 import android.view.ViewGroup;
14 import android.widget.AdapterView;
15 import android.widget.ListView;
16 import android.widget.TextView;
18 import java.util.ArrayList;
19 import java.util.List;
21 import cc.minsnail.activity.ChatActivity;
22 import cc.minsnail.activity.UserSummaryActivity;
23 import cc.minsnail.adapter.FriendsAdapter;
24 import cc.minsnail.adapter.RosterAdapter;
25 import cc.minsnail.adapter.TreeAdapter;
26 import cc.minsnail.aidl.IServiceAidlInterface;
27 import cc.minsnail.beans.YgTreeNode;
28 import cc.minsnail.beans.YgUser;
29 import cc.minsnail.beans.YgUserNode;
30 import cc.minsnail.config.Config;
31 import cc.minsnail.smackclient.R;
34 * Created by yg on 2016/10/27.
36 public class RosterFragment extends Fragment {
37 private static final int GET_ROSTER = 1;
38 private Context mContext;
39 private IServiceAidlInterface mSmackService;
41 private ListView mRoster;
42 private RosterAdapter mRosterAdapter;
43 private Handler handler = new Handler() {
45 public void handleMessage(Message msg) {
54 private List mRosterList;
56 private void getRoster() {
57 List<YgUserNode> nodes = new ArrayList<>();
58 for (int i = 0; i < mRosterList.size(); i++) {
59 YgUser user = (YgUser) mRosterList.get(i);
60 YgUserNode node = new YgUserNode();
61 node.setId(user.getId());
62 node.setPid(user.getPid());
63 node.setJid(user.getJid());
64 node.setUserName(user.getUsername());
65 node.setName(user.getName());
69 mRosterAdapter = new RosterAdapter<YgUserNode>(mContext, mRoster, nodes, 0);
70 mRosterAdapter.setOnTreeNodeClickListener(new TreeAdapter.OnTreeNodeClickListener() {
72 public void onClick(YgTreeNode node, int position) {
73 Intent intent = new Intent(mContext, UserSummaryActivity.class);
74 intent.putExtra(Config.KEY_FROM_JID, node.getJid());
75 intent.putExtra(Config.KEY_FROM_NAME,node.getName());
76 startActivity(intent);
79 mRoster.setAdapter(mRosterAdapter);
80 } catch (IllegalAccessException e) {
85 public RosterFragment() {
88 public RosterFragment(IServiceAidlInterface smackService) {
89 mSmackService = smackService;
93 public void onAttach(Context context) {
94 super.onAttach(context);
100 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
101 mView = inflater.inflate(R.layout.fragment_roster, container, false);
106 public void onActivityCreated(Bundle savedInstanceState) {
107 super.onActivityCreated(savedInstanceState);
113 public void onStart() {
118 private void showRoster() {
119 new Thread(new Runnable() {
122 if (mSmackService != null) {
124 mRosterList = mSmackService.getRoster();
125 handler.sendEmptyMessage(GET_ROSTER);
126 } catch (RemoteException e) {
134 private void initView() {
135 mRoster = (ListView) mView.findViewById(R.id.main_list_roster);
138 private void initEvent() {