OSDN Git Service

eec1b23a7cb0252e4df37d1f4ab2b919df7294d8
[smackclient/smackclient.git] / app / src / main / java / cc / minsnail / fragment / RosterFragment.java
1 package cc.minsnail.fragment;
2
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;
17
18 import java.util.ArrayList;
19 import java.util.List;
20
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;
32
33 /**
34  * Created by yg on 2016/10/27.
35  */
36 public class RosterFragment extends Fragment {
37     private static final int GET_ROSTER = 1;
38     private Context mContext;
39     private IServiceAidlInterface mSmackService;
40     private View mView;
41     private ListView mRoster;
42     private RosterAdapter mRosterAdapter;
43     private Handler handler = new Handler() {
44         @Override
45         public void handleMessage(Message msg) {
46             switch (msg.what) {
47                 case GET_ROSTER:
48                     getRoster();
49                     break;
50             }
51         }
52     };
53
54     private List mRosterList;
55
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());
66             nodes.add(node);
67         }
68         try {
69             mRosterAdapter = new RosterAdapter<YgUserNode>(mContext, mRoster, nodes, 0);
70             mRosterAdapter.setOnTreeNodeClickListener(new TreeAdapter.OnTreeNodeClickListener() {
71                 @Override
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);
77                 }
78             });
79             mRoster.setAdapter(mRosterAdapter);
80         } catch (IllegalAccessException e) {
81             e.printStackTrace();
82         }
83     }
84
85     public RosterFragment() {
86     }
87
88     public RosterFragment(IServiceAidlInterface smackService) {
89         mSmackService = smackService;
90     }
91
92     @Override
93     public void onAttach(Context context) {
94         super.onAttach(context);
95         mContext = context;
96     }
97
98     @Nullable
99     @Override
100     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
101         mView = inflater.inflate(R.layout.fragment_roster, container, false);
102         return mView;
103     }
104
105     @Override
106     public void onActivityCreated(Bundle savedInstanceState) {
107         super.onActivityCreated(savedInstanceState);
108         initView();
109         initEvent();
110     }
111
112     @Override
113     public void onStart() {
114         super.onStart();
115         showRoster();
116     }
117
118     private void showRoster() {
119         new Thread(new Runnable() {
120             @Override
121             public void run() {
122                 if (mSmackService != null) {
123                     try {
124                         mRosterList = mSmackService.getRoster();
125                         handler.sendEmptyMessage(GET_ROSTER);
126                     } catch (RemoteException e) {
127                         e.printStackTrace();
128                     }
129                 }
130             }
131         }).start();
132     }
133
134     private void initView() {
135         mRoster = (ListView) mView.findViewById(R.id.main_list_roster);
136     }
137
138     private void initEvent() {
139
140     }
141 }