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();
}
});
}
}