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 }

  • 相关阅读:
    洛谷p1017 进制转换(2000noip提高组)
    Personal Training of RDC
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Eurasia
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Peterhof.
    Asia Hong Kong Regional Contest 2019
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Siberia
    XVIII Open Cup named after E.V. Pankratiev. Ukrainian Grand Prix.
    XVIII Open Cup named after E.V. Pankratiev. GP of SPb
    卜题仓库
    2014 ACM-ICPC Vietnam National First Round
  • 原文地址:https://www.cnblogs.com/zhangtingkuo/p/3967564.html
Copyright © 2011-2022 走看看