1
1
package com .rae .cnblogs .adapter ;
2
2
3
3
import android .support .v7 .widget .GridLayoutManager ;
4
- import android .support .v7 .widget .LinearLayoutManager ;
5
4
import android .text .TextUtils ;
6
5
import android .view .LayoutInflater ;
7
6
import android .view .View ;
10
9
import com .rae .cnblogs .R ;
11
10
import com .rae .cnblogs .RaeImageLoader ;
12
11
import com .rae .cnblogs .model .MomentHolder ;
12
+ import com .rae .cnblogs .sdk .UserProvider ;
13
13
import com .rae .cnblogs .sdk .bean .MomentBean ;
14
+ import com .rae .cnblogs .sdk .bean .UserInfoBean ;
14
15
import com .rae .swift .Rx ;
15
16
16
17
import java .lang .ref .WeakReference ;
18
+ import java .util .List ;
17
19
18
20
/**
19
21
* 闪存
20
22
* Created by ChenRui on 2017/10/27 0027 10:49.
21
23
*/
22
24
public class MomentAdapter extends BaseItemAdapter <MomentBean , MomentHolder > implements View .OnClickListener {
25
+
26
+ String blogApp ;
27
+
28
+ public MomentAdapter () {
29
+ initUserInfo ();
30
+ }
31
+
32
+ private void initUserInfo () {
33
+ UserInfoBean userInfoBean = UserProvider .getInstance ().getLoginUserInfo ();
34
+ if (userInfoBean != null ) {
35
+ blogApp = userInfoBean .getBlogApp ();
36
+ }
37
+ }
38
+
39
+ @ Override
40
+ public void invalidate (List <MomentBean > data ) {
41
+ super .invalidate (data );
42
+ initUserInfo ();
43
+ }
44
+
23
45
@ Override
24
46
public void onClick (View v ) {
25
47
@@ -29,44 +51,80 @@ public interface OnBloggerClickListener {
29
51
void onBloggerClick (String blogApp );
30
52
}
31
53
54
+ public interface OnDeleteClickListener {
55
+ void onDeleteClick (String ingId , int position );
56
+ }
57
+
32
58
private OnBloggerClickListener mOnBloggerClickListener ;
59
+ private OnDeleteClickListener mOnDeleteClickListener ;
33
60
34
61
public void setOnBloggerClickListener (OnBloggerClickListener onBloggerClickListener ) {
35
62
mOnBloggerClickListener = onBloggerClickListener ;
36
63
}
37
64
65
+ public void setOnDeleteClickListener (OnDeleteClickListener onDeleteClickListener ) {
66
+ mOnDeleteClickListener = onDeleteClickListener ;
67
+ }
68
+
38
69
@ Override
39
70
public MomentHolder onCreateViewHolder (LayoutInflater inflater , ViewGroup parent , int viewType ) {
40
71
return new MomentHolder (inflateView (parent , R .layout .item_moment_list ));
41
72
}
42
73
43
74
@ Override
44
75
public void onBindViewHolder (MomentHolder holder , int position , MomentBean m ) {
45
- holder .mRecyclerView .setVisibility (Rx .isEmpty (m .getImageList ()) ? View .GONE : View .VISIBLE );
46
-
47
76
int imageCount = Rx .getCount (m .getImageList ());
48
- if (imageCount == 1 ) {
49
- holder . mRecyclerView . setLayoutManager ( new LinearLayoutManager ( holder . itemView . getContext ()));
50
- } else {
77
+ holder . mRecyclerView . setVisibility (imageCount > 1 ? View . GONE : View . VISIBLE );
78
+
79
+ if ( imageCount > 1 ) {
51
80
int spanCount = imageCount == 4 || imageCount == 2 ? 2 : 3 ;
52
81
holder .mRecyclerView .setLayoutManager (new GridLayoutManager (holder .itemView .getContext (), spanCount ));
82
+ holder .mRecyclerView .setAdapter (new MomentImageAdapter (m .getImageList ()));
83
+ } else {
84
+ holder .mRecyclerView .getLayoutManager ().removeAllViews ();
85
+ holder .mRecyclerView .removeAllViews ();
53
86
}
54
87
55
- holder .mRecyclerView .setAdapter (new MomentImageAdapter (m .getImageList ()));
56
-
57
88
58
89
View .OnClickListener onClickListener = TextUtils .isEmpty (m .getBlogApp ()) ? null : new ItemBloggerClickListener (m .getBlogApp (), mOnBloggerClickListener );
59
90
holder .authorView .setOnClickListener (onClickListener );
60
91
holder .avatarView .setOnClickListener (onClickListener );
61
92
holder .dateView .setOnClickListener (onClickListener );
62
93
94
+ holder .thumbView .setVisibility (imageCount == 1 ? View .VISIBLE : View .GONE );
95
+ if (imageCount == 1 ) {
96
+ RaeImageLoader .displayHeaderImage (m .getImageList ().get (0 ), holder .thumbView );
97
+ }
98
+
63
99
RaeImageLoader .displayHeaderImage (m .getAvatar (), holder .avatarView );
100
+ holder .deleteView .setVisibility (TextUtils .equals (blogApp , m .getBlogApp ()) ? View .VISIBLE : View .GONE );
101
+ holder .deleteView .setOnClickListener (new ItemDeleteClickListener (m .getId (), position , mOnDeleteClickListener ));
64
102
holder .authorView .setText (m .getAuthorName ());
65
103
holder .dateView .setText (m .getPostTime ());
66
104
holder .summaryView .setText (m .getContent ());
67
105
holder .commentView .setText (m .getCommentCount ());
68
106
}
69
107
108
+ private static class ItemDeleteClickListener implements View .OnClickListener {
109
+
110
+ private final WeakReference <OnDeleteClickListener > mOnDeleteClickListener ;
111
+ private final String mId ;
112
+ private final int mPosition ;
113
+
114
+ public ItemDeleteClickListener (String id , int position , OnDeleteClickListener onDeleteClickListener ) {
115
+ mId = id ;
116
+ mPosition = position ;
117
+ mOnDeleteClickListener = new WeakReference <>(onDeleteClickListener );
118
+ }
119
+
120
+ @ Override
121
+ public void onClick (View v ) {
122
+ if (mOnDeleteClickListener .get () != null ) {
123
+ mOnDeleteClickListener .get ().onDeleteClick (mId , mPosition );
124
+ }
125
+ }
126
+ }
127
+
70
128
71
129
private static class ItemBloggerClickListener implements View .OnClickListener {
72
130
private String blogApp ;
0 commit comments