package com.partynetwork.iparty.site;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.ObjectMapper;
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;
import com.partynetwork.dataprovider.util.T;
import com.partynetwork.dataprovider.util.Util;
import com.partynetwork.iparty.R;
import com.partynetwork.iparty.app.common.SinaWeiboHelper;
import com.sina.weibo.sdk.exception.WeiboException;
import com.sina.weibo.sdk.net.RequestListener;
import com.baidu.mobstat.StatService;
import com.lidroid.xutils.util.LogUtils;
public class SiteShareUserActivity extends Activity implements
OnScrollListener, OnClickListener {
public static final String PLAT_TYPE = "platType";
public static final int SINA = 0;
public static final int QQ = 1;
public static final int RENREN = 2;
/**
* 显示列表
*/
private ListView mListView;
/** 平台类别 */
private int platType;
/** 用户适配器 */
private SiteShareUserAdapter adapter;
/** 最后的可视项索引 */
private int visibleLastIndex = 0;
/** 存放用户的list */
private HashMap<String, Following> map;
private List<Following> data;
private boolean hasNext;
/** 正在加载 */
private boolean isLoading;
private int pageNum = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.site_share_plat_user);
platType = getIntent().getIntExtra(PLAT_TYPE, SINA);
initView();
init();
}
private void initView() {
findViewById(R.id.menu_head_left).setOnClickListener(this);
mListView = (ListView) findViewById(R.id.listview);
}
/**
* 初始化
*/
private void init() {
map = new HashMap<String, Following>();
data = new ArrayList<Following>();
adapter = new SiteShareUserAdapter(this, data);
mListView.setAdapter(adapter);
mListView.setOnScrollListener(this);
initData();
}
/**
* 初始化数据
*/
private void initData() {
getFriendList();
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.menu_head_left:
// 关闭
finish();
break;
default:
break;
}
}
/**
* 获取平台好友列表
*/
private void getFriendList() {
SinaWeiboHelper.getFriends(this, new RequestListener() {
@Override
public void onWeiboException(WeiboException arg0) {
T.showShort(SiteShareUserActivity.this, arg0.getMessage());
}
@Override
public void onComplete(String arg0) {
if (!TextUtils.isEmpty(arg0)) {
LogUtils.i(arg0);
ObjectMapper om = new ObjectMapper();
try {
JsonNode treeNode = om.readTree(arg0);
JsonNode dataNode = treeNode.path("users");
List<LinkedHashMap<String, Object>> list = om
.readValue(dataNode, List.class);
if (list == null) {
return;
}
for (LinkedHashMap<String, Object> lh : list) {
Following following = new Following();
following.name = lh.get("name").toString();
following.uid = lh.get("id").toString();
following.icon = lh.get("avatar_large").toString();
following.sex = lh.get("gender").toString();
following.description = lh.get("description")
.toString();
data.add(following);
}
adapter.notifyDataSetChanged();
} catch (JsonProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
Util.showMsg(this, "加载中请稍后!");
isLoading = true;
}
public class Following {
public boolean checked;
public String name;
public String description;
public String uid;
public String icon;
public String sex;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
int itemsLastIndex = adapter.getCount() - 1; // 数据集最后一项的索引
int lastIndex = itemsLastIndex; // 加上底部的loadMoreView项
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE
&& visibleLastIndex == lastIndex) {
// 如果是自动加载,可以在这里放置异步加载数据的代码
if (hasNext) {
getFriendList();
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
visibleLastIndex = firstVisibleItem + visibleItemCount - 1;
}
@Override
protected void onResume() {
StatService.onResume(this);
super.onResume();
}
@Override
protected void onPause() {
StatService.onPause(this);
super.onPause();
}
}