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.NearPeopleAdapter; import com.tencent.hq.qq.entity.User; 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.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import cn.bmob.im.task.BRequest; import cn.bmob.v3.listener.CountListener; import cn.bmob.v3.listener.FindListener; public class NearPeopleActivity extends ActivityBase implements IXListViewListener,OnItemClickListener { XListView mListView; NearPeopleAdapter adapter; String from = ""; List<User> nears = new ArrayList<User>(); private double QUERY_KILOMETERS = 10;//Ĭ�ϲ�ѯ10���ﷶΧ�ڵ��� @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_near_people); initView(); } private void initView() { initTopBarForLeft("附近的人"); initXListView(); } private void initXListView() { mListView = (XListView) findViewById(R.id.list_near); mListView.setOnItemClickListener(this); // ���Ȳ�������ظ�� mListView.setPullLoadEnable(false); // �������� mListView.setPullRefreshEnable(true); // ���ü����� mListView.setXListViewListener(this); // mListView.pullRefreshing(); adapter = new NearPeopleAdapter(this, nears); mListView.setAdapter(adapter); initNearByList(false); } int curPage = 0; ProgressDialog progress ; private void initNearByList(final boolean isUpdate){ if(!isUpdate){ progress = new ProgressDialog(NearPeopleActivity.this); progress.setMessage("正在查询附近的人..."); progress.setCanceledOnTouchOutside(true); progress.show(); } if(!mApplication.getLatitude().equals("")&&!mApplication.getLongtitude().equals("")){ double latitude = Double.parseDouble(mApplication.getLatitude()); double longtitude = Double.parseDouble(mApplication.getLongtitude()); userManager.queryKiloMetersListByPage(isUpdate,0,"location", longtitude, latitude, true,QUERY_KILOMETERS,"sex",false,new FindListener<User>() { //�˷���Ĭ�ϲ�ѯ���д����λ����Ϣ�����Ա�ΪŮ���û��б?����㲻�������б�Ļ�������ѯ�����е�isShowFriends����Ϊfalse���� // userManager.queryNearByListByPage(isUpdate,0,"location", longtitude, latitude, true,"sex",false,new FindListener<User>() { @Override public void onSuccess(List<User> arg0) { // TODO Auto-generated method stub if (CollectionUtils.isNotNull(arg0)) { if(isUpdate){ nears.clear(); } adapter.addAll(arg0); if(arg0.size()<BRequest.QUERY_LIMIT_COUNT){ mListView.setPullLoadEnable(false); ShowToast("附近的人搜索完成!"); }else{ mListView.setPullLoadEnable(true); } }else{ ShowToast("暂无附近的人!"); } if(!isUpdate){ progress.dismiss(); }else{ refreshPull(); } } @Override public void onError(int arg0, String arg1) { // TODO Auto-generated method stub ShowToast("暂无附近的人!"); mListView.setPullLoadEnable(false); if(!isUpdate){ progress.dismiss(); }else{ refreshPull(); } } }); }else{ ShowToast("暂无附近的人!"); progress.dismiss(); refreshPull(); } } /** ��ѯ��� * @Title: queryMoreNearList * @Description: TODO * @param @param page * @return void * @throws */ private void queryMoreNearList(int page){ double latitude = Double.parseDouble(mApplication.getLatitude()); double longtitude = Double.parseDouble(mApplication.getLongtitude()); //��ѯ10���ﷶΧ�ڵ��Ա�ΪŮ���û��б� userManager.queryKiloMetersListByPage(true,page,"location", longtitude, latitude, true,QUERY_KILOMETERS,"sex",false,new FindListener<User>() { //��ѯȫ������λ����Ϣ���Ա�ΪŮ�Ե��û��б� // userManager.queryNearByListByPage(true,page, "location", longtitude, latitude, true,"sex",false,new FindListener<User>() { @Override public void onSuccess(List<User> 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 User user = (User) adapter.getItem(position-1); Intent intent =new Intent(this,SetMyInfoActivity.class); intent.putExtra("from", "add"); intent.putExtra("username", user.getUsername()); startAnimActivity(intent); } @Override public void onRefresh() { // TODO Auto-generated method stub initNearByList(true); } private void refreshLoad(){ if (mListView.getPullLoading()) { mListView.stopLoadMore(); } } private void refreshPull(){ if (mListView.getPullRefreshing()) { mListView.stopRefresh(); } } @Override public void onLoadMore() { // TODO Auto-generated method stub double latitude = Double.parseDouble(mApplication.getLatitude()); double longtitude = Double.parseDouble(mApplication.getLongtitude()); userManager.queryKiloMetersTotalCount(User.class, "location", longtitude, latitude, true,QUERY_KILOMETERS,"sex",false,new CountListener() { // userManager.queryNearTotalCount(User.class, "location", longtitude, latitude, true,"sex",false,new CountListener() { @Override public void onSuccess(int arg0) { // TODO Auto-generated method stub if(arg0 >nears.size()){ curPage++; queryMoreNearList(curPage); }else{ ShowToast("数据加载完成"); mListView.setPullLoadEnable(false); refreshLoad(); } } @Override public void onFailure(int arg0, String arg1) { // TODO Auto-generated method stub ShowLog("查询附近的人总数失败"+arg1); refreshLoad(); } }); } }