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