zoukankan      html  css  js  c++  java
  • Android 博客园客户端 (六) OnItemLongClickListener for Blog, News and Comment

    项目地址:https://github.com/ZhangTingkuo/AndroidCnblogs

    为博客、新闻、评论界面的ListView添加长按事件,一边快速转到相应的页面。

    1. 博客:查看内容、查看评论、查看作者。

    2. 新闻:查看内容、查看评论。

    3. 评论:引用、回复。(功能暂未实现)

      1 package com.arlen.cnblogs.view;
      2 
      3 import java.io.UnsupportedEncodingException;
      4 import java.net.URLEncoder;
      5 import java.util.List;
      6 
      7 import android.app.Dialog;
      8 import android.content.Context;
      9 import android.content.Intent;
     10 import android.os.Bundle;
     11 import android.util.Log;
     12 import android.view.View;
     13 import android.widget.AdapterView;
     14 import android.widget.AdapterView.OnItemClickListener;
     15 import android.widget.ArrayAdapter;
     16 import android.widget.ListView;
     17 
     18 import com.arlen.cnblogs.BlogActivity;
     19 import com.arlen.cnblogs.CommentActivity;
     20 import com.arlen.cnblogs.NewsActivity;
     21 import com.arlen.cnblogs.R;
     22 import com.arlen.cnblogs.UserActivity;
     23 import com.arlen.cnblogs.entity.Blog;
     24 import com.arlen.cnblogs.entity.Comment;
     25 import com.arlen.cnblogs.entity.News;
     26 import com.arlen.cnblogs.entity.User;
     27 import com.arlen.cnblogs.utils.AppUtils;
     28 import com.arlen.cnblogs.utils.Config;
     29 
     30 public class ItemDialog extends Dialog implements OnItemClickListener {
     31 
     32     private Context context;
     33     private String[] items;
     34     private ListView listView;
     35     public int selectIndex = 0;
     36 
     37     public Blog blogEntry;
     38     public News newsEntry;
     39     public Comment commentEntry;
     40     public String commentString;
     41     public String TAG;
     42 
     43     public ItemDialog(Context context, int theme) {
     44         super(context, theme);
     45         this.context = context;
     46     }
     47 
     48     public ItemDialog(Context context) {
     49         super(context);
     50         this.context = context;
     51     }
     52 
     53     public ItemDialog(Context context, String[] items) {
     54         super(context);
     55         this.context = context;
     56         this.items = items;
     57     }
     58 
     59     @Override
     60     protected void onCreate(Bundle savedInstanceState) {
     61         super.onCreate(savedInstanceState);
     62         this.setContentView(R.layout.item_dialog);
     63 
     64         // this.setCanceledOnTouchOutside(false);
     65 
     66         listView = (ListView) findViewById(R.id.listViewBlogDialog);
     67         listView.setAdapter(new ArrayAdapter<String>(context,
     68                 android.R.layout.simple_list_item_1, items));
     69         listView.setOnItemClickListener(this);
     70     }
     71 
     72     @Override
     73     public void onItemClick(AdapterView<?> parent, View view, int position,
     74             long id) {
     75         selectIndex = position;
     76         Log.i("ItemDialog", "selectIndex   ---   " + selectIndex);
     77 
     78         String selectItem = items[position];
     79 
     80         if (selectItem.equals("查看内容")) {
     81             this.hide();
     82             if (TAG.equals("blog")) {
     83                 viewBlogContent();
     84             } else if (TAG.equals("news")) {
     85                 viewNewsContent();
     86             }
     87         } else if (selectItem.equals("查看评论")) {
     88             this.hide();
     89             if (TAG.equals("blog")) {
     90                 viewComment(blogEntry.getBlogId(), "blog");
     91             } else if (TAG.equals("news")) {
     92                 viewComment(newsEntry.getNewsId(), "news");
     93             }
     94         } else if (selectItem.equals("查看作者")) {
     95             this.hide();
     96             viewAuthor();
     97         } else if (selectItem.equals("回复")) {
     98             this.hide();
     99             addComment(commentString, "回复");
    100         } else if (selectItem.equals("引用")) {
    101             this.hide();
    102             addComment(commentString, "引用");
    103         } else if (selectItem.equals("取消")) {
    104             this.hide();
    105         }
    106 
    107         return;
    108     }
    109 
    110     private void viewBlogContent() {
    111         Intent intent = new Intent(context, BlogActivity.class);
    112 
    113         if (blogEntry.getAuthorAvatar() != null) {
    114             intent.putExtra("avatar", blogEntry.getAuthorAvatar().toString());
    115         } else {
    116             intent.putExtra(
    117                     "avatar",
    118                     "https://github.com/ZhangTingkuo/AndroidCnblogs/blob/master/res/drawable-hdpi/ic_launcher.png");
    119         }
    120         intent.putExtra("title", blogEntry.getBlogTitle());
    121         intent.putExtra("author", blogEntry.getAuthorName());
    122         intent.putExtra("published",
    123                 AppUtils.parseDateToString(blogEntry.getPublishedDateDate()));
    124         intent.putExtra("id", blogEntry.getBlogId());
    125         intent.putExtra("link", blogEntry.getBlogTitle());
    126 
    127         context.startActivity(intent);
    128     }
    129 
    130     private void viewNewsContent() {
    131         Intent intent = new Intent(context, NewsActivity.class);
    132         if (newsEntry.getTopicIcon() != null) {
    133             intent.putExtra("topicIcon", newsEntry.getTopicIcon().toString());
    134         } else {
    135             intent.putExtra(
    136                     "topicIcon",
    137                     "https://github.com/ZhangTingkuo/AndroidCnblogs/blob/master/res/drawable-hdpi/ic_launcher.png");
    138         }
    139 
    140         intent.putExtra("title", newsEntry.getNewsTitle());
    141         intent.putExtra("sourceName", newsEntry.getSourceName());
    142         intent.putExtra("published",
    143                 AppUtils.parseDateToString(newsEntry.getPublishedDate()));
    144         intent.putExtra("id", newsEntry.getNewsId());
    145 
    146         context.startActivity(intent);
    147     }
    148 
    149     private void viewAuthor() {
    150 
    151         new Thread(new Runnable() {
    152 
    153             @Override
    154             public void run() {
    155                 String authorName = blogEntry.getAuthorName();
    156                 String path = Config.SEARCH_AUTHOR_BY_NAME;
    157                 Log.i("SearchActivity", "textAuthor:" + authorName);
    158                 try {
    159                     authorName = URLEncoder.encode(authorName, "utf-8");
    160                 } catch (UnsupportedEncodingException e) {
    161                     e.printStackTrace();
    162                 }
    163                 path = path.replace("{TERM}", authorName);
    164 
    165                 Log.i("SearchActivity", "path:" + path);
    166                 List<User> userList = AppUtils.getUserList(path);
    167                 User userEntry = userList.get(0);
    168 
    169                 Intent intent = new Intent(context, UserActivity.class);
    170                 intent.putExtra("blogapp", userEntry.getBlogapp());
    171                 intent.putExtra("link", userEntry.getUserLink().toString());
    172 
    173                 if (userEntry.getUserAvatar() != null) {
    174                     intent.putExtra("avatar", userEntry.getUserAvatar()
    175                             .toString());
    176                 } else {
    177                     intent.putExtra(
    178                             "avatar",
    179                             "https://github.com/ZhangTingkuo/AndroidCnblogs/blob/master/res/drawable-hdpi/ic_launcher.png");
    180                 }
    181 
    182                 intent.putExtra("postcount", userEntry.getPostCount());
    183                 intent.putExtra("updated",
    184                         AppUtils.parseDateToString(userEntry.getUpdatedDate()));
    185                 intent.putExtra("title", userEntry.getTitle());
    186                 context.startActivity(intent);
    187             }
    188         }).start();
    189     }
    190 
    191     private void addComment(String string, String type) {
    192 
    193     }
    194 
    195     private void viewComment(int id, String type) {
    196         Intent intent = new Intent(context, CommentActivity.class);
    197         intent.putExtra("id", id);
    198         intent.putExtra("type", type);
    199         context.startActivity(intent);
    200     }
    201 }

  • 相关阅读:
    hdu 4308 Saving Princess claire_ BFS
    进程调度
    LinearLayout具体解释一:LinearLayout的简单介绍
    CSS: 解决Div float后,父Div无法高度自适应的问题
    框架布局FrameLayout
    Coundn't load memtrack module (No such file or directory)
    线性布局LinearLayout
    android视图概述
    activity状态的保存和恢复
    回溯和DFS效率分析
  • 原文地址:https://www.cnblogs.com/zhangtingkuo/p/3967564.html
Copyright © 2011-2022 走看看