1111import android .widget .TextView ;
1212import android .widget .Toast ;
1313
14+ import com .borjabravo .readmoretextview .ReadMoreTextView ;
15+
16+ import java .util .ArrayList ;
17+ import java .util .List ;
18+
1419public class MainActivity extends AppCompatActivity {
1520
21+ private static final int COUNT = 30 ;
22+ private List <Item > mItems = new ArrayList <>();
23+
1624 @ Override
1725 protected void onCreate (Bundle savedInstanceState ) {
1826 super .onCreate (savedInstanceState );
@@ -27,11 +35,27 @@ protected void onCreate(Bundle savedInstanceState) {
2735 text4 .setText (getString (R .string .one_line_text ));
2836 RecyclerView listView = (RecyclerView ) findViewById (R .id .list );
2937 listView .setLayoutManager (new LinearLayoutManager (this ));
30- listView .setAdapter (new ItemAdapter ());
38+ initMockData ();
39+ listView .setAdapter (new ItemAdapter (mItems ));
40+ }
41+
42+ private void initMockData () {
43+ for (int i = 0 ; i < COUNT ; i ++) {
44+ Item item = new Item ();
45+ item .text = i + " : " + getString (R .string .lorem_ipsum );
46+ item .readMore = true ;
47+ mItems .add (item );
48+ }
3149 }
3250
3351 static class ItemAdapter extends RecyclerView .Adapter <ViewHolder > {
3452
53+ private List <Item > mItems ;
54+
55+ public ItemAdapter (List <Item > items ) {
56+ mItems = new ArrayList <>(items );
57+ }
58+
3559 @ Override
3660 public ViewHolder onCreateViewHolder (ViewGroup parent , int viewType ) {
3761 View view = LayoutInflater .from (parent .getContext ()).inflate (R .layout .list_item , parent , false );
@@ -41,31 +65,46 @@ public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
4165 @ Override
4266 public void onBindViewHolder (ViewHolder holder , final int position ) {
4367 final Context context = holder .itemView .getContext ();
44- holder .text .setText (context . getString ( R . string . lorem_ipsum ) );
68+ holder .text .setText (mItems . get ( position ). text );
4569 holder .itemView .setOnClickListener (new View .OnClickListener () {
4670 @ Override
4771 public void onClick (View v ) {
4872 Toast .makeText (context , "you clicked " + position , Toast .LENGTH_SHORT ).show ();
4973 }
5074 });
5175
52- //todo ReadMoreTextView should have a pulbic method to reset textView's collapse status
53- // e.g.
54- //((ReadMoreTextView) holder.itemView).setCollapsed(position % 2 == 0)
76+ holder .text .setToggleWatcher (new ReadMoreTextView .Watcher () {
77+ @ Override
78+ public void onExpanded () {
79+ mItems .get (position ).readMore = false ;
80+ }
81+
82+ @ Override
83+ public void onCollapsed () {
84+ mItems .get (position ).readMore = true ;
85+ }
86+ });
87+
88+ holder .text .toggleCollapsed (mItems .get (position ).readMore );
5589 }
5690
5791 @ Override
5892 public int getItemCount () {
59- return 10 ;
93+ return mItems . size () ;
6094 }
6195 }
6296
6397 static class ViewHolder extends RecyclerView .ViewHolder {
64- TextView text ;
98+ ReadMoreTextView text ;
6599
66100 public ViewHolder (View itemView ) {
67101 super (itemView );
68- text = (TextView ) itemView .findViewById (R .id .text );
102+ text = (ReadMoreTextView ) itemView .findViewById (R .id .text );
69103 }
70104 }
105+
106+ static class Item {
107+ public String text ;
108+ public boolean readMore ;
109+ }
71110}
0 commit comments