package com.tencent.hq.qq.ui; import java.util.ArrayList; import java.util.List; import com.tencent.hq.qq.R; import com.tencent.hq.qq.adapter.AddFriendAdapter; import com.tencent.hq.qq.util.CollectionUtils; import com.tencent.hq.qq.widget.xlist.XListView; import com.tencent.hq.qq.widget.xlist.XListView.IXListViewListener; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.EditText; import cn.bmob.im.bean.BmobChatUser; import cn.bmob.im.task.BRequest; import cn.bmob.im.util.BmobLog; import cn.bmob.v3.listener.CountListener; import cn.bmob.v3.listener.FindListener; /** ��Ӻ��� * @ClassName: AddFriendActivity * @Description: TODO * @author smile * @date 2014-6-5 ����5:26:41 */ public class AddFriendActivity extends ActivityBase implements OnClickListener,IXListViewListener,OnItemClickListener{ EditText et_find_name; Button btn_search; List<BmobChatUser> users = new ArrayList<BmobChatUser>(); XListView mListView; AddFriendAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_contact); initView(); } private void initView(){ initTopBarForLeft("查找好友"); et_find_name = (EditText)findViewById(R.id.et_find_name); btn_search = (Button)findViewById(R.id.btn_search); btn_search.setOnClickListener(this); initXListView(); } private void initXListView() { mListView = (XListView) findViewById(R.id.list_search); // ���Ȳ�������ظ�� mListView.setPullLoadEnable(false); // ���������� mListView.setPullRefreshEnable(false); // ���ü����� mListView.setXListViewListener(this); // mListView.pullRefreshing(); adapter = new AddFriendAdapter(this, users); mListView.setAdapter(adapter); mListView.setOnItemClickListener(this); } int curPage = 0; ProgressDialog progress ; private void initSearchList(final boolean isUpdate){ if(!isUpdate){ progress = new ProgressDialog(AddFriendActivity.this); progress.setMessage("正在搜索..."); progress.setCanceledOnTouchOutside(true); progress.show(); } userManager.queryUserByPage(isUpdate, 0, searchName, new FindListener<BmobChatUser>() { @Override public void onError(int arg0, String arg1) { // TODO Auto-generated method stub BmobLog.i("查询错误:"+arg1); if(users!=null){ users.clear(); } ShowToast("用户不存在"); mListView.setPullLoadEnable(false); refreshPull(); curPage = 0; } @Override public void onSuccess(List<BmobChatUser> arg0) { // TODO Auto-generated method stub if (CollectionUtils.isNotNull(arg0)) { if(isUpdate){ users.clear(); } adapter.addAll(arg0); if(arg0.size()<BRequest.QUERY_LIMIT_COUNT){ mListView.setPullLoadEnable(false); ShowToast("用户搜索完成!"); }else{ mListView.setPullLoadEnable(true); } }else{ BmobLog.i("查询成功,无返回值ֵ"); if(users!=null){ users.clear(); } ShowToast("用户不存在"); } if(!isUpdate){ progress.dismiss(); }else{ refreshPull(); } //�����ܱ�֤ÿ�β�ѯ���Ǵ�ͷ��ʼ curPage = 0; } }); } /** ��ѯ��� * @Title: queryMoreNearList * @Description: TODO * @param @param page * @return void * @throws */ private void queryMoreSearchList(int page){ userManager.queryUserByPage(true, page, searchName, new FindListener<BmobChatUser>() { @Override public void onSuccess(List<BmobChatUser> arg0) { // TODO Auto-generated method stub if (CollectionUtils.isNotNull(arg0)) { adapter.addAll(arg0); } refreshLoad(); } @Override public void onError(int arg0, String arg1) { // TODO Auto-generated method stub ShowLog("搜索更多用户出现错误:"+arg1); mListView.setPullLoadEnable(false); refreshLoad(); } }); } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub BmobChatUser user = (BmobChatUser) adapter.getItem(position-1); Intent intent =new Intent(this,SetMyInfoActivity.class); intent.putExtra("from", "add"); intent.putExtra("username", user.getUsername()); startAnimActivity(intent); } String searchName =""; @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch (arg0.getId()) { case R.id.btn_search://���� users.clear(); searchName = et_find_name.getText().toString(); if(searchName!=null && !searchName.equals("")){ initSearchList(false); }else{ ShowToast("请输入用户名"); } break; default: break; } } @Override public void onRefresh() { // TODO Auto-generated method stub } @Override public void onLoadMore() { // TODO Auto-generated method stub userManager.querySearchTotalCount(searchName, new CountListener() { @Override public void onSuccess(int arg0) { // TODO Auto-generated method stub if(arg0 >users.size()){ curPage++; queryMoreSearchList(curPage); }else{ ShowToast("数据加载完成"); mListView.setPullLoadEnable(false); refreshLoad(); } } @Override public void onFailure(int arg0, String arg1) { // TODO Auto-generated method stub ShowLog("查询附近的人总数失败"+arg1); refreshLoad(); } }); } private void refreshLoad(){ if (mListView.getPullLoading()) { mListView.stopLoadMore(); } } private void refreshPull(){ if (mListView.getPullRefreshing()) { mListView.stopRefresh(); } } }