11package org .schabi .newpipe .info_list .holder ;
22
3+ import android .view .View ;
34import android .view .ViewGroup ;
45import android .widget .ImageView ;
56import android .widget .TextView ;
67
8+ import androidx .annotation .Nullable ;
9+
710import org .schabi .newpipe .R ;
811import org .schabi .newpipe .extractor .InfoItem ;
912import org .schabi .newpipe .extractor .channel .ChannelInfoItem ;
13+ import org .schabi .newpipe .extractor .utils .Utils ;
1014import org .schabi .newpipe .info_list .InfoItemBuilder ;
1115import org .schabi .newpipe .local .history .HistoryRecordManager ;
1216import org .schabi .newpipe .util .PicassoHelper ;
1317import org .schabi .newpipe .util .Localization ;
1418
1519public class ChannelMiniInfoItemHolder extends InfoItemHolder {
16- public final ImageView itemThumbnailView ;
17- public final TextView itemTitleView ;
20+ private final ImageView itemThumbnailView ;
21+ private final TextView itemTitleView ;
1822 private final TextView itemAdditionalDetailView ;
23+ private final TextView itemChannelDescriptionView ;
1924
2025 ChannelMiniInfoItemHolder (final InfoItemBuilder infoItemBuilder , final int layoutId ,
2126 final ViewGroup parent ) {
@@ -24,6 +29,7 @@ public class ChannelMiniInfoItemHolder extends InfoItemHolder {
2429 itemThumbnailView = itemView .findViewById (R .id .itemThumbnailView );
2530 itemTitleView = itemView .findViewById (R .id .itemTitleView );
2631 itemAdditionalDetailView = itemView .findViewById (R .id .itemAdditionalDetails );
32+ itemChannelDescriptionView = itemView .findViewById (R .id .itemChannelDescriptionView );
2733 }
2834
2935 public ChannelMiniInfoItemHolder (final InfoItemBuilder infoItemBuilder ,
@@ -40,7 +46,14 @@ public void updateFromItem(final InfoItem infoItem,
4046 final ChannelInfoItem item = (ChannelInfoItem ) infoItem ;
4147
4248 itemTitleView .setText (item .getName ());
43- itemAdditionalDetailView .setText (getDetailLine (item ));
49+
50+ final String detailLine = getDetailLine (item );
51+ if (detailLine == null ) {
52+ itemAdditionalDetailView .setVisibility (View .GONE );
53+ } else {
54+ itemAdditionalDetailView .setVisibility (View .VISIBLE );
55+ itemAdditionalDetailView .setText (getDetailLine (item ));
56+ }
4457
4558 PicassoHelper .loadAvatar (item .getThumbnailUrl ()).into (itemThumbnailView );
4659
@@ -56,14 +69,35 @@ public void updateFromItem(final InfoItem infoItem,
5669 }
5770 return true ;
5871 });
72+
73+ if (itemChannelDescriptionView != null ) {
74+ // itemChannelDescriptionView will be null in the mini variant
75+ if (Utils .isBlank (item .getDescription ())) {
76+ itemChannelDescriptionView .setVisibility (View .GONE );
77+ } else {
78+ itemChannelDescriptionView .setVisibility (View .VISIBLE );
79+ itemChannelDescriptionView .setText (item .getDescription ());
80+ itemChannelDescriptionView .setMaxLines (detailLine == null ? 3 : 2 );
81+ }
82+ }
5983 }
6084
61- protected String getDetailLine (final ChannelInfoItem item ) {
62- String details = "" ;
63- if (item .getSubscriberCount () >= 0 ) {
64- details += Localization .shortSubscriberCount (itemBuilder .getContext (),
85+ @ Nullable
86+ private String getDetailLine (final ChannelInfoItem item ) {
87+ if (item .getStreamCount () >= 0 && item .getSubscriberCount () >= 0 ) {
88+ return Localization .concatenateStrings (
89+ Localization .shortSubscriberCount (itemBuilder .getContext (),
90+ item .getSubscriberCount ()),
91+ Localization .localizeStreamCount (itemBuilder .getContext (),
92+ item .getStreamCount ()));
93+ } else if (item .getStreamCount () >= 0 ) {
94+ return Localization .localizeStreamCount (itemBuilder .getContext (),
95+ item .getStreamCount ());
96+ } else if (item .getSubscriberCount () >= 0 ) {
97+ return Localization .shortSubscriberCount (itemBuilder .getContext (),
6598 item .getSubscriberCount ());
99+ } else {
100+ return null ;
66101 }
67- return details ;
68102 }
69103}
0 commit comments