/** * */ package com.d3.d3xmpp.fragments; import java.util.ArrayList; import java.util.List; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.d3.d3xmpp.R; import com.d3.d3xmpp.activites.ChatActivity; import com.d3.d3xmpp.activites.MyRoomActivity; import com.d3.d3xmpp.activites.NewFriendActivity; import com.d3.d3xmpp.adapter.ContactsAdapter; import com.d3.d3xmpp.d3View.D3Fragment; import com.d3.d3xmpp.d3View.D3View; import com.d3.d3xmpp.d3View.MyListView; import com.d3.d3xmpp.d3View.MyListView.OnRefreshListener; import com.d3.d3xmpp.model.Friend; import com.d3.d3xmpp.util.MySideBar; import com.d3.d3xmpp.util.MySideBar.OnTouchingLetterChangedListener; import com.d3.d3xmpp.util.PinyinUtils; import com.d3.d3xmpp.util.XmppLoadThread; import com.d3.d3xmpp.xmpp.XmppConnection; /** * @author MZH * */ public class ContactFragment extends D3Fragment implements OnTouchingLetterChangedListener{ @D3View public EditText searchText; @D3View TextView newCountView; @D3View MyListView listView; @D3View MySideBar sideBar; @D3View Button groupBtn,addBtn; private ContactsAdapter adapter; private FriendReceiver reciver; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = setContentView(inflater, R.layout.acti_contacts); initView(); // ���յ�����Ϣ���¼����� reciver = new FriendReceiver(); getActivity().registerReceiver(reciver,new IntentFilter("friendChange")); getActivity().registerReceiver(reciver,new IntentFilter("FriendNewMsg")); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initData(); } @Override public void onResume() { searchText.clearFocus(); super.onResume(); } public void initData() { adapter.clear(); adapter.add(new Friend("�µ�����")); adapter.add(new Friend("Ⱥ��")); adapter.addAll(XmppConnection.getInstance().getFriendBothList()); } public void initView() { sideBar.setOnTouchingLetterChangedListener(this); listView.setTextFilterEnabled(true); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { Intent intent = new Intent(); if (position == 1) { intent.setClass(getActivity(), NewFriendActivity.class); } else if (position == 2) { intent.setClass(getActivity(), MyRoomActivity.class); } else { intent.setClass(getActivity(), ChatActivity.class); intent.putExtra("chatName", XmppConnection.getInstance().getFriendBothList().get(position-3).username); } getActivity().startActivity(intent); } }); listView.setonRefreshListener(new OnRefreshListener() { @Override public void onRefresh() { friendChange(); } }); adapter = new ContactsAdapter(getActivity()); listView.setAdapter(adapter); adapter.add(new Friend("�µ�����")); adapter.add(new Friend("Ⱥ��")); searchText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { adapter.clear(); adapter.add(new Friend("�µ�����")); adapter.add(new Friend("Ⱥ��")); if (s.toString().equals("")) { adapter.addAll(XmppConnection.getInstance().getFriendList()); } else { List<Friend> friendTemps = new ArrayList<Friend>(); for (Friend friend : XmppConnection.getInstance().getFriendList()) { if (friend.username.contains(s.toString())) { friendTemps.add(friend); } } adapter.addAll(friendTemps); } } }); } public void friendChange() { new XmppLoadThread(getActivity()) { @Override protected void result(Object object) { initData(); listView.onRefreshComplete(); } @Override protected Object load() { return XmppConnection.getInstance().getFriendBothList(); } }; } public void onClick(View v) { } public int alphaIndexer(String s) { int position = 0; String alpha; for (int i = 0; i < XmppConnection.getInstance().getFriendBothList().size(); i++) { alpha = PinyinUtils.getPingYin(XmppConnection.getInstance().getFriendBothList().get(i).username).toUpperCase(); if (alpha.startsWith(s)) { position = i; break; } } return position; } @Override public void onTouchingLetterChanged(String s) { if (alphaIndexer(s) > 0) { int position = alphaIndexer(s); listView.setSelection(position); } } private class FriendReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("FriendNewMsg")) { adapter.notifyDataSetChanged(); } else { // ���½��� friendChange(); } } } }