(转摘)Android腾讯微薄客户端开发十三:提及篇(与我有关的微博)
Java代码 复制代码 收藏代码
  1. publicclassReferActivityextendsListActivityimplementsOnItemClickListener,OnItemLongClickListener{
  2. privateDataHelperdataHelper;
  3. privateUserInfouser;
  4. privateMyWeiboSyncweibo;
  5. privateListViewlistView;
  6. privateReferAdapteradapter;
  7. privateJSONArrayarray;
  8. privateAsyncImageLoaderasyncImageLoader;
  9. privateHandlerhandler;
  10. privateProgressDialogprogressDialog;
  11. privateViewtop_panel;
  12. privateButtontop_btn_left;
  13. privateButtontop_btn_right;
  14. privateTextViewtop_title;
  15. @Override
  16. protectedvoidonCreate(BundlesavedInstanceState){
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.refer);
  19. setUpViews();
  20. setUpListeners();
  21. dataHelper=DataBaseContext.getInstance(getApplicationContext());
  22. weibo=WeiboContext.getInstance();
  23. List<UserInfo>userList=dataHelper.GetUserList(false);
  24. SharedPreferencespreferences=getSharedPreferences("default_user",Activity.MODE_PRIVATE);
  25. Stringnick=preferences.getString("user_default_nick","");
  26. if(nick!=""){
  27. user=dataHelper.getUserByName(nick,userList);
  28. top_title.setText("提到我的");//顶部工具栏名称
  29. }
  30. /*weibo.setAccessTokenKey(user.getToken());
  31. weibo.setAccessTokenSecrect(user.getTokenSecret());*/
  32. progressDialog=newProgressDialog(ReferActivity.this);//生成一个进度条
  33. progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
  34. progressDialog.setTitle("请稍等");
  35. progressDialog.setMessage("正在读取数据中!");
  36. handler=newGetReferHandler();
  37. newGetReferThread().start();//耗时操作,开启一个新线程获取数据
  38. progressDialog.show();
  39. }
  40. privatevoidsetUpViews(){
  41. listView=getListView();
  42. top_panel=(View)findViewById(R.id.refer_top);
  43. top_btn_left=(Button)top_panel.findViewById(R.id.top_btn_left);
  44. top_btn_right=(Button)top_panel.findViewById(R.id.top_btn_right);
  45. top_title=(TextView)top_panel.findViewById(R.id.top_title);
  46. }
  47. privatevoidsetUpListeners(){
  48. listView.setOnItemClickListener(this);
  49. listView.setOnItemLongClickListener(this);
  50. }
  51. classGetReferHandlerextendsHandler{
  52. @Override
  53. publicvoidhandleMessage(Messagemsg){
  54. if(array!=null){
  55. adapter=newReferAdapter(ReferActivity.this,array);
  56. listView.setAdapter(adapter);
  57. }
  58. progressDialog.dismiss();//关闭进度条
  59. }
  60. }
  61. classGetReferThreadextendsThread{
  62. @Override
  63. publicvoidrun(){
  64. StringjsonStr=weibo.getRefers(weibo.getAccessTokenKey(),weibo.getAccessTokenSecrect(),PageFlag.PageFlag_First,0,20,0);
  65. try{
  66. JSONObjectdataObj=newJSONObject(jsonStr).getJSONObject("data");
  67. if(dataObj!=null){
  68. array=dataObj.getJSONArray("info");
  69. }
  70. }catch(JSONExceptione){
  71. e.printStackTrace();
  72. }
  73. Messagemsg=handler.obtainMessage();
  74. handler.sendMessage(msg);
  75. }
  76. }
  77. classReferAdapterextendsBaseAdapter{
  78. privateContextcontext;
  79. privateLayoutInflaterinflater;
  80. privateJSONArrayarray;
  81. publicReferAdapter(Contextcontext,JSONArrayarray){
  82. super();
  83. this.context=context;
  84. this.array=array;
  85. this.inflater=LayoutInflater.from(context);
  86. }
  87. @Override
  88. publicintgetCount(){
  89. returnarray.length();
  90. }
  91. @Override
  92. publicObjectgetItem(intposition){
  93. returnarray.opt(position);
  94. }
  95. @Override
  96. publiclonggetItemId(intposition){
  97. returnposition;
  98. }
  99. @Override
  100. publicViewgetView(finalintposition,ViewconvertView,ViewGroupparent){
  101. asyncImageLoader=newAsyncImageLoader();
  102. ReferViewHolderviewHolder=newReferViewHolder();
  103. JSONObjectdata=(JSONObject)array.opt(position);
  104. JSONObjectsource=null;
  105. convertView=inflater.inflate(R.layout.refer_list_item,null);
  106. try{
  107. source=data.getJSONObject("source");
  108. }catch(JSONExceptione1){
  109. e1.printStackTrace();
  110. }
  111. viewHolder.refer_headicon=(ImageView)convertView.findViewById(R.id.refer_headicon);
  112. viewHolder.refer_nick=(TextView)convertView.findViewById(R.id.refer_nick);
  113. viewHolder.refer_hasimage=(ImageView)convertView.findViewById(R.id.refer_hasimage);
  114. viewHolder.refer_timestamp=(TextView)convertView.findViewById(R.id.refer_timestamp);
  115. viewHolder.refer_origtext=(TextView)convertView.findViewById(R.id.refer_origtext);
  116. viewHolder.refer_source=(TextView)convertView.findViewById(R.id.refer_source);
  117. if(data!=null){
  118. try{
  119. convertView.setTag(data.get("id"));
  120. viewHolder.refer_nick.setText(data.getString("nick"));
  121. viewHolder.refer_timestamp.setText(TimeUtil.converTime(Long.parseLong(data.getString("timestamp"))));
  122. viewHolder.refer_origtext.setText(data.getString("origtext"),TextView.BufferType.SPANNABLE);
  123. if(source!=null){
  124. viewHolder.refer_source.setText(source.getString("nick")+":"+source.getString("origtext"));
  125. viewHolder.refer_source.setBackgroundResource(R.drawable.source_bg);
  126. }
  127. //异步加载图片
  128. DrawablecachedImage=asyncImageLoader.loadDrawable(data.getString("head")+"/100",viewHolder.refer_headicon,newImageCallback(){
  129. @Override
  130. publicvoidimageLoaded(DrawableimageDrawable,ImageViewimageView,StringimageUrl){
  131. imageView.setImageDrawable(imageDrawable);
  132. }
  133. });
  134. if(cachedImage==null){
  135. viewHolder.refer_headicon.setImageResource(R.drawable.icon);
  136. }else{
  137. viewHolder.refer_headicon.setImageDrawable(cachedImage);
  138. }
  139. if(data.getJSONArray("image")!=null){
  140. viewHolder.refer_hasimage.setImageResource(R.drawable.hasimage);
  141. }
  142. }catch(JSONExceptione){
  143. e.printStackTrace();
  144. }catch(Exceptione){
  145. e.printStackTrace();
  146. }
  147. }
  148. returnconvertView;
  149. }
  150. }
  151. staticclassReferViewHolder{
  152. privateImageViewrefer_headicon;
  153. privateTextViewrefer_nick;
  154. privateTextViewrefer_timestamp;
  155. privateTextViewrefer_origtext;
  156. privateTextViewrefer_source;
  157. privateImageViewrefer_hasimage;
  158. }
  159. @Override
  160. publicbooleanonItemLongClick(AdapterView<?>arg0,Viewarg1,intposition,longarg3){
  161. CharSequence[]items=null;
  162. try{
  163. items=newCharSequence[]{"转播","对话","点评","收藏",((JSONObject)array.opt(position)).getString("nick"),"取消"};
  164. }catch(JSONExceptione){
  165. e.printStackTrace();
  166. }
  167. newAlertDialog.Builder(ReferActivity.this).setTitle("选项").setItems(items,newDialogInterface.OnClickListener(){
  168. @Override
  169. publicvoidonClick(DialogInterfacedialog,intwhich){
  170. switch(which){
  171. case0:{
  172. }
  173. break;
  174. case1:{
  175. }
  176. break;
  177. case2:{
  178. }
  179. break;
  180. case3:{
  181. }
  182. break;
  183. case4:{
  184. }
  185. break;
  186. case5:{
  187. }
  188. break;
  189. default:
  190. break;
  191. }
  192. }
  193. }).show();
  194. returnfalse;
  195. }
  196. @Override
  197. publicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intposition,longarg3){
  198. JSONObjectweiboInfo=(JSONObject)array.opt(position);
  199. Intentintent=newIntent(ReferActivity.this,WeiboDetailActivity.class);
  200. try{
  201. intent.putExtra("weiboid",weiboInfo.getString("id"));
  202. startActivity(intent);
  203. }catch(JSONExceptione){
  204. e.printStackTrace();
  205. }
  206. }
  207. }
public class ReferActivity extends ListActivity implements OnItemClickListener,OnItemLongClickListener{private DataHelper dataHelper;private UserInfo user;private MyWeiboSync weibo;private ListView listView;private ReferAdapter adapter;private JSONArray array;private AsyncImageLoader asyncImageLoader;private Handler handler;private ProgressDialog progressDialog;private View top_panel;private Button top_btn_left;private Button top_btn_right;private TextView top_title;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.refer);setUpViews();setUpListeners();dataHelper = DataBaseContext.getInstance(getApplicationContext());weibo = WeiboContext.getInstance();List<UserInfo> userList = dataHelper.GetUserList(false);SharedPreferences preferences = getSharedPreferences("default_user",Activity.MODE_PRIVATE);String nick = preferences.getString("user_default_nick", "");if (nick != "") {user = dataHelper.getUserByName(nick,userList);top_title.setText("提到我的");//顶部工具栏名称}/*weibo.setAccessTokenKey(user.getToken());weibo.setAccessTokenSecrect(user.getTokenSecret());*/progressDialog = new ProgressDialog(ReferActivity.this);// 生成一个进度条progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);progressDialog.setTitle("请稍等");progressDialog.setMessage("正在读取数据中!");handler = new GetReferHandler();new GetReferThread().start();//耗时操作,开启一个新线程获取数据progressDialog.show();}private void setUpViews(){listView = getListView();top_panel = (View)findViewById(R.id.refer_top);top_btn_left = (Button)top_panel.findViewById(R.id.top_btn_left);top_btn_right = (Button)top_panel.findViewById(R.id.top_btn_right);top_title = (TextView)top_panel.findViewById(R.id.top_title);}private void setUpListeners(){listView.setOnItemClickListener(this);listView.setOnItemLongClickListener(this);}class GetReferHandler extends Handler {@Overridepublic void handleMessage(Message msg) {if(array!=null){adapter = new ReferAdapter(ReferActivity.this, array);listView.setAdapter(adapter);}progressDialog.dismiss();// 关闭进度条}}class GetReferThread extends Thread {@Overridepublic void run() {String jsonStr = weibo.getRefers(weibo.getAccessTokenKey(), weibo.getAccessTokenSecrect(), PageFlag.PageFlag_First, 0, 20, 0);try {JSONObject dataObj = new JSONObject(jsonStr).getJSONObject("data");if(dataObj!=null){array = dataObj.getJSONArray("info");}} catch (JSONException e) {e.printStackTrace();}Message msg = handler.obtainMessage();handler.sendMessage(msg);}}class ReferAdapter extends BaseAdapter {private Context context;private LayoutInflater inflater;private JSONArray array;public ReferAdapter(Context context, JSONArray array) {super();this.context = context;this.array = array;this.inflater = LayoutInflater.from(context);}@Overridepublic int getCount() {return array.length();}@Overridepublic Object getItem(int position) {return array.opt(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {asyncImageLoader = new AsyncImageLoader();ReferViewHolder viewHolder = new ReferViewHolder();JSONObject data = (JSONObject)array.opt(position);JSONObject source = null;convertView = inflater.inflate(R.layout.refer_list_item, null);try {source = data.getJSONObject("source");} catch (JSONException e1) {e1.printStackTrace(); }viewHolder.refer_headicon = (ImageView) convertView.findViewById(R.id.refer_headicon);viewHolder.refer_nick = (TextView) convertView.findViewById(R.id.refer_nick);viewHolder.refer_hasimage = (ImageView) convertView.findViewById(R.id.refer_hasimage);viewHolder.refer_timestamp = (TextView) convertView.findViewById(R.id.refer_timestamp);viewHolder.refer_origtext = (TextView) convertView.findViewById(R.id.refer_origtext);viewHolder.refer_source = (TextView) convertView.findViewById(R.id.refer_source);if(data!=null){try {convertView.setTag(data.get("id"));viewHolder.refer_nick.setText(data.getString("nick"));viewHolder.refer_timestamp.setText(TimeUtil.converTime(Long.parseLong(data.getString("timestamp"))));viewHolder.refer_origtext.setText(data.getString("origtext"), TextView.BufferType.SPANNABLE);if(source!=null){viewHolder.refer_source.setText(source.getString("nick")+":"+source.getString("origtext"));viewHolder.refer_source.setBackgroundResource(R.drawable.source_bg);}//异步加载图片Drawable cachedImage = asyncImageLoader.loadDrawable(data.getString("head")+"/100",viewHolder.refer_headicon, new ImageCallback(){                    @Override                    public void imageLoaded(Drawable imageDrawable,ImageView imageView, String imageUrl) {                        imageView.setImageDrawable(imageDrawable);                    }                });if (cachedImage == null) {viewHolder.refer_headicon.setImageResource(R.drawable.icon);} else {viewHolder.refer_headicon.setImageDrawable(cachedImage);}if(data.getJSONArray("image")!=null){viewHolder.refer_hasimage.setImageResource(R.drawable.hasimage);}} catch (JSONException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}return convertView;}}static class ReferViewHolder {private ImageView refer_headicon;private TextView refer_nick;private TextView refer_timestamp;private TextView refer_origtext;private TextView refer_source;private ImageView refer_hasimage;}@Overridepublic boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position,long arg3) {CharSequence [] items = null;try {items= new CharSequence[]{"转播","对话","点评","收藏",((JSONObject)array.opt(position)).getString("nick"),"取消"};} catch (JSONException e) {e.printStackTrace();}new AlertDialog.Builder(ReferActivity.this).setTitle("选项").setItems(items,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {switch (which) {case 0: {}break;case 1: {}break;case 2: {}break;case 3: {}break;case 4: {}break;case 5: {}break;default:break;}}}).show();return false;}@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {JSONObject weiboInfo = (JSONObject)array.opt(position);Intent intent = new Intent(ReferActivity.this, WeiboDetailActivity.class);try {intent.putExtra("weiboid", weiboInfo.getString("id"));startActivity(intent);} catch (JSONException e) {e.printStackTrace();}}}


Java代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:background="#ffffffff"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">
  3. <includeandroid:id="@+id/refer_top"layout="@layout/top_panel"android:layout_alignParentTop="true"/>
  4. <ListViewandroid:layout_below="@id/refer_top"android:id="@id/android:list"android:layout_width="fill_parent"android:cacheColorHint="#00000000"
  5. android:layout_height="wrap_content"android:layout_weight="1"android:divider="@drawable/list_divider"/>
  6. </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="#ffffffff" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"><include android:id="@+id/refer_top" layout="@layout/top_panel" android:layout_alignParentTop="true"/><ListView android:layout_below="@id/refer_top" android:id="@id/android:list" android:layout_width="fill_parent" android:cacheColorHint="#00000000"android:layout_height="wrap_content" android:layout_weight="1" android:divider="@drawable/list_divider"/></RelativeLayout>


Java代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:paddingTop="3.0dip"android:orientation="horizontal"android:background="@drawable/listitem_selector"android:layout_width="fill_parent"android:layout_height="wrap_content">
  3. <RelativeLayoutandroid:layout_width="50.0dip"android:layout_height="50.0dip"android:layout_weight="0.0">
  4. <ImageViewandroid:id="@+id/refer_headicon"android:layout_width="45.0dip"android:layout_height="45.0dip"android:scaleType="fitCenter"android:layout_centerInParent="true"/>
  5. </RelativeLayout>
  6. <RelativeLayoutandroid:orientation="vertical"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="4.0dip"android:layout_weight="1.0">
  7. <TextViewandroid:id="@+id/refer_nick"android:textColor="#000000"android:layout_width="wrap_content"android:layout_height="32.0dip"android:textSize="14.0sp"android:layout_alignParentLeft="true"/>
  8. <TextViewandroid:id="@+id/refer_timestamp"android:textColor="#ff000000"android:layout_width="wrap_content"android:layout_height="32.0dip"android:textSize="8.0sp"android:layout_alignParentRight="true"/>
  9. <ImageViewandroid:id="@+id/refer_hasimage"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toLeftOf="@id/refer_timestamp"/>
  10. <TextViewandroid:id="@+id/refer_origtext"android:textColor="#081008"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="12.0sp"android:layout_below="@id/refer_nick"/>
  11. <TextViewandroid:layout_marginLeft="6.0dip"android:id="@+id/refer_source"android:textColor="#101810"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="10.0sp"android:layout_below="@id/refer_origtext"android:layout_alignParentBottom="true"/>
  12. </RelativeLayout>
  13. </LinearLayout>
  14. http://helloandroid.iteye.com/blog/1136767

更多相关文章

  1. android studio 61歌曲服务器搭建 歌曲app 下载 完整代码
  2. [转]代码实现渐变背景
  3. Android左右滑动实现Activity切换类 (整合代码实例)
  4. 获取Android各类系统相关信息的接口实现代码
  5. Android实现资料收藏
  6. [置顶] android,在java代码中,如何给textview设置不同的颜色,以及引
  7. Android的xml布局文件代码讲解(TextView控件)
  8. android 监听SDCard安装和卸载的代码片段(测试通过)
  9. Android 数据查询query函数参数解析

随机推荐

  1. Android开发之SlidingDrawer(一)
  2. android Handler使用
  3. Android(安卓)使用 lambda 表达式
  4. Android(安卓)中使用MIC(麦克风)录音
  5. Android开发学习 之 一、开发环境的搭建
  6. appwidget-provider
  7. ArcGIS API For Android离线地图的实现
  8. Android中shape的使用
  9. 关于android 多媒体数据库
  10. android中类似于gif 实现图片的动画效果