Activity从未如此清爽,既清又爽

下一篇细说。

  1 public class MomentActivity extends Activity implements IMomentView, OnClickListener, OnItemLongClickListener, OnItemClickListener {
  2     private MomentPresenter presenter;
  3
  4     private ImageView imageViewSelfAvatar;
  5     private TextView textViewSelfName;
  6     private TextView textViewSelfContent;
  7     private TextView textViewDate;
  8
  9     private ScollGridView photoGridView;
 10     private PhotoAdapter adapterPhotos;
 11
 12     private ScollGridView likeGridView;
 13     private LikeAdapter adapterLikes;
 14     private ScollListView commentListView;
 15     private CommentAdapter adapterComments;
 16
 17     private View triangle;
 18     private View layoutLikesComments;
 19     private View layoutLikes;
 20     private View divider;
 21
 22     private EditText editTextComment;
 23
 24     @Override
 25     protected void onCreate(Bundle savedInstanceState) {
 26         super.onCreate(savedInstanceState);
 27         requestWindowFeature(Window.FEATURE_NO_TITLE);
 28         setContentView(R.layout.activity_moment);
 29
 30         presenter = new MomentPresenter(this);
 31
 32         initViews();
 33         presenter.loadData();
 34     }
 35
 36     private void initViews() {
 37         // 返回按钮。
 38         findViewById(R.id.title_back_image).setOnClickListener(this);
 39
 40         // 发布者。
 41         imageViewSelfAvatar = (ImageView) findViewById(R.id.user_self_image);
 42         imageViewSelfAvatar.setOnClickListener(this);
 43         textViewSelfName = (TextView) findViewById(R.id.user_self_name);
 44         textViewSelfName.setOnClickListener(this);
 45
 46         // 正文。
 47         textViewSelfContent = (TextView) findViewById(R.id.user_self_content);
 48         textViewSelfContent.setOnClickListener(this);
 49
 50         // 正文配图。
 51         photoGridView = (ScollGridView) findViewById(R.id.user_self_photo_gridView);
 52         adapterPhotos = new PhotoAdapter(this);
 53         photoGridView.setAdapter(adapterPhotos);
 54         photoGridView.setOnItemLongClickListener(this);
 55
 56         // 日期。
 57         textViewDate = (TextView) findViewById(R.id.user_self_dateTime);
 58         textViewDate.setOnClickListener(this);
 59
 60         // 删除。
 61         findViewById(R.id.textViewDelete).setOnClickListener(this);
 62
 63         // 点赞。
 64         findViewById(R.id.imageViewAddLike).setOnClickListener(this);
 65
 66         // 赞和评论的背景。
 67         triangle = findViewById(R.id.triangle);
 68         layoutLikesComments = findViewById(R.id.layout_likes_comments);
 69         // 赞区域。
 70         layoutLikes = findViewById(R.id.layout_likes);
 71         divider = findViewById(R.id.divider_likes_comments);
 72
 73         // 赞。
 74         likeGridView = (ScollGridView) findViewById(R.id.user_other_photo_gridView);
 75         adapterLikes = new LikeAdapter(this);
 76         likeGridView.setAdapter(adapterLikes);
 77         likeGridView.setOnItemLongClickListener(this);
 78
 79         // 发送图片。
 80         findViewById(R.id.bottom_emoji).setOnClickListener(this);
 81
 82         // 评论。
 83         commentListView = (ScollListView) findViewById(R.id.user_other_comment_listView);
 84         adapterComments = new CommentAdapter(this);
 85         commentListView.setAdapter(adapterComments);
 86         commentListView.setOnItemLongClickListener(this);
 87         commentListView.setOnItemClickListener(this);
 88
 89         // 发送评论。
 90         editTextComment = (EditText) findViewById(R.id.bottom_editText);
 91         findViewById(R.id.bottom_send).setOnClickListener(this);
 92     }
 93
 94     @Override
 95     public void onClick(View v) {
 96         switch (v.getId()) {
 97         case R.id.title_back_image:
 98             finish();
 99             break;
100
101         case R.id.user_self_image:
102 //            presenter.publish(this);
103 //            break;
104 //
105         case R.id.user_self_name:
106             presenter.selectPublisher(this);
107             break;
108
109         case R.id.user_self_content:
110             presenter.editContent();
111             break;
112
113         case R.id.user_self_dateTime:
114             presenter.pickTime();
115             break;
116
117         case R.id.textViewDelete:
118             presenter.resetAll();
119             break;
120
121         case R.id.imageViewAddLike:
122             presenter.like(this);
123             break;
124
125         case R.id.bottom_emoji:
126             presenter.selectImage(this);
127             break;
128
129         case R.id.bottom_send:
130             presenter.comment(this, editTextComment.getText().toString().trim());
131             break;
132         }
133     }
134
135     @Override
136     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
137         switch (parent.getId()) {
138         case R.id.user_other_comment_listView:
139             presenter.setReplyTo(adapterComments.getItem(position).user);
140             break;
141         }
142     }
143
144     @Override
145     public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
146         switch (parent.getId()) {
147         case R.id.user_self_photo_gridView:
148             presenter.deleteImage(position);
149             break;
150
151         case R.id.user_other_photo_gridView:
152             presenter.deleteLike(position);
153             break;
154
155         case R.id.user_other_comment_listView:
156             presenter.deleteComment(position);
157             break;
158         }
159         return false;
160     }
161
162     @Override
163     public void updatePublisher(User publisher) {
164         imageViewSelfAvatar.setImageBitmap(ImageUtil.getBitmapFromUri(this, publisher.avatar));
165         textViewSelfName.setText(publisher.name);
166     }
167
168     @Override
169     public void updateContent(String content) {
170         textViewSelfContent.setText(content);
171     }
172
173     @Override
174     public void updateImages(List<Image> images) {
175         adapterPhotos.setData(images);
176         adapterPhotos.notifyDataSetChanged();
177     }
178
179     @Override
180     public void updateDate(String formattedDate) {
181         textViewDate.setText(formattedDate);
182     }
183
184     @Override
185     public void updateLikes(List<Like> likes) {
186         adapterLikes.setData(likes);
187         adapterLikes.notifyDataSetChanged();
188     }
189
190     @Override
191     public void updateComments(List<Comment> comments) {
192         adapterComments.setData(comments);
193         adapterComments.notifyDataSetChanged();
194     }
195
196     @Override
197     public void updateImagesVisibility(boolean isVisible) {
198         photoGridView.setVisibility(isVisible ? View.VISIBLE : View.GONE);
199     }
200
201     @Override
202     public void updateLikeCommentAreaVisibility(boolean isVisible) {
203         triangle.setVisibility(isVisible ? View.VISIBLE : View.GONE);
204         layoutLikesComments.setVisibility(isVisible ? View.VISIBLE : View.GONE);
205     }
206
207     @Override
208     public void updateLikesVisibility(boolean isVisible) {
209         layoutLikes.setVisibility(isVisible ? View.VISIBLE : View.GONE);
210         divider.setVisibility(isVisible ? View.VISIBLE : View.GONE);
211     }
212
213     @Override
214     public void updateCommentHint(String hint) {
215         editTextComment.setHint(hint);
216     }
217
218     @Override
219     public void clearCommentText() {
220         editTextComment.setText("");
221     }
222
223     @Override
224     public void resetViews() {
225         setContentView(R.layout.activity_moment);
226         initViews();
227     }
228
229     @Override
230     public Context getContext() {
231         return this;
232     }
233
234     @Override
235     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
236         presenter.handleActivityResult(requestCode, resultCode, data);
237     }
238
239     @Override
240     protected void onDestroy() {
241         super.onDestroy();
242         presenter.onActivityDestroyed();
243     }
244 }
时间: 2024-08-18 06:52:28

Activity从未如此清爽,既清又爽的相关文章

百科知识 八大菜系是指哪八大菜系

八大菜系 八大菜系代表: 百科名片 菜系,也称"帮菜",是指在选料.切配.烹饪等技艺方面,经长期演变而自成体系,具有鲜明的地方风味特色,并为社会所公认的中国的菜肴流派.我国的菜系,是指在一定区域内,由于气候.地理.历史.物产及饮食风俗的不同,经过漫长历史演变而形成的一整套自成体系的烹饪技艺和风味,并被全国各地所承认的地方菜肴.菜肴在烹饪中有许多流派.鲁.川.苏.粤四大菜系形成历史较早,后来,浙.闽.湘.徽等地方菜也逐渐出名,于是形成了我国的"八大菜系". 中国菜系

(原创)天气又转热了,我给她做了个智能小风扇

黄花深巷, 红叶低窗, 凄凉一片秋声. 豆雨声来, 中间夹带风声. 疏疏二十五点, 丽谯门.不锁更声. 故人远, 问谁摇玉佩, 檐底铃声. 彩角声吹月堕, 渐连营马动, 四起笳声. 闪烁邻灯, 灯前尚有砧声. 知他诉愁到晓, 碎哝哝.多少蛩声. 诉未了,把一半.分与雁声. 一首短诗<声声慢 秋声>献与大家.蒋捷的这首短诗共96字,其中有十个“声”字:其通过风声.雨声.更声.铃声.笳声.砧声.蛩声.雁声来形容秋天的到来,颇有节奏感. 一直颇喜欢古典诗词,怎奈天赋不佳,至今连完整的四言诗都木写出来

android 意图和四大组件

意图 Intent                                            一.显式意图        直接指定要实现的类:            Intent intent=new Intent(MainActivity.this,xxx.class);            this.startActivity(intent);            二.隐式意图        1:xml配置:在意图所指向的类的配置中添加属性<intent-filter>&l

[android] 数据的异步加载和图片保存

把从网络获取的图片数据保存在SD卡上, 先把权限都加上 网络权限 android.permission.INTERNET SD卡读写权限 android.permission.MOUNT_UNMOUNT_FILESYSTEMS android.permission.WRITE_EXTERNAL_STORAGE 总体布局  写界面,使用ListView,创建条目的布局文件,水平摆放的ImageView TextView 在activity中获取到ListView对象,调用setAdapter()方

我们为什么要把Dagger2,MVP以及Rxjava引入项目中?

1Why? 毫无疑问在Android开发圈中这三个技术是经常被提及的,如此多的文章和开源项目在介绍他们,使用他们,开发者也或多或少的被带动起来在自己的项目中使用他们,但是使用他们之前我们知道为什么要使用他们,他们能给我们带来什么好处吗,还是只是跟随潮流 其实我们大多数项目中是使用不到他们的,或者说对这些技术的需求不是很大,为什么这么说呢? 大多数的开发者其实都是在开发功能模块比较少的小项目,对于这些项目来说,其实使用这些技术带来的好处相对于在开发时的所付出的时间来说其实性价比并不高,因为学习这些

如何给足自己“面子”

一辆豪华轿车,一顿不错的饭,一次巴厘岛旅行!“面子”都被打发了.但是容颜才是女性最想要的,容颜才能让她们得到“面子”.今天就让“女性”得到正真意义上的满足! 注意:化妝前一定要做好護膚工作,这样效果才会好. 化妆的正确步骤:清面 → 爽膚水→ 面霜/乳液 →修眉 →防晒隔离霜 → 修顏液 → 粉底 → 画眉 → 眼影 → 眼线 →唇膏→ 腮紅→ 定妆 → 夹睫毛→ 假睫毛→ 睫毛膏 清洁脸部很重要,所以要清洗干净.涂上化妝水软化角质层,然后选择适合自己的保湿水和乳液并按摩之完全吸收. 修眉:先用

Android开发学习之路--Notification之初体验

一般当我们收到短信啊,微信啊,或者有些app的提醒.我们都会在通知栏收到一天简单的消息,然后点击消息进入到app里面,事实上android中有专门的Notification的类能够完毕这个工作,这里就实现下这个功能. 首先新建NotificationTestproject,然后加入一个button,用来触发通知.然后编写代码例如以下: package com.example.jared.notificationtest; import android.app.NotificationManage

从PRISM开始学WPF(一)WPF?

原文:从PRISM开始学WPF(一)WPF? 我最近打算学习WPF ,在寻找MVVM框架的时候发现了PRISM,在此之前还从一些博客上了解了其他的MVVM框架,比如浅谈WPF中的MVVM框架--MVVMFoundation 中提到的MVVMFoundation,再比如 ViewModel从未如此清爽 - 轻量级WPF MVVM框架Stylet 中的Stylet.在知道PRISM是微软自家的框架的时候,就毫不犹豫的选了他,即便个人很倾向于可爱的Stylet.作为初学者,对WPF都没有很好的了解的情

解决android中EditText导致的内存泄漏问题

开发中用到了LeankCanary,在一个简单的页面中(例如 :仅仅 包含Edittext),也会导致内训泄漏,为此,我在网上找了大量资料,最终解决.例如一个布局:<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:focusable="true"android:focusableInTouchMode=&qu