為博客、新聞、評論界面的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 }