1+ /*
2+ * Sample code from Stack Overflow:
3+ * https://stackoverflow.com/a/40584425
4+ */
5+
6+ package google .sc21 .sortify ;
7+
8+ import android .content .Context ;
9+ import android .view .LayoutInflater ;
10+ import android .view .View ;
11+ import android .view .ViewGroup ;
12+ import android .widget .TextView ;
13+
14+ import androidx .recyclerview .widget .RecyclerView ;
15+
16+ import java .util .List ;
17+
18+ public class MyRecyclerViewAdapter extends RecyclerView .Adapter <MyRecyclerViewAdapter .ViewHolder > {
19+ private List <Junk > mData ;
20+ private LayoutInflater mInflater ;
21+ private ItemClickListener mClickListener ;
22+
23+ //Data is Passed into the Constructor
24+ MyRecyclerViewAdapter (Context context , List <Junk > data ) {
25+ this .mInflater = LayoutInflater .from (context );
26+ this .mData = data ;
27+ }
28+
29+ //Inflates the row layout from xml when needed
30+ @ Override
31+ public ViewHolder onCreateViewHolder (ViewGroup parent , int viewType ) {
32+ View view = mInflater .inflate (R .layout .recyclerview_row , parent , false );
33+ return new ViewHolder (view );
34+ }
35+
36+ //Binds the data to the TextView in each row
37+ @ Override
38+ public void onBindViewHolder (ViewHolder holder , int position ) {
39+ String junkName = mData .get (position ).returnName ();
40+ List <String > junkAlias = mData .get (position ).returnAliases ();
41+ String junkInstruction = mData .get (position ).returnInfo ();
42+ holder .nameField .setText (junkName );
43+ String aliasTemp = junkAlias .toString ().substring (1 );
44+ aliasTemp = aliasTemp .substring (0 , aliasTemp .length ()-1 );
45+ holder .aliasField .setText (aliasTemp );
46+ if (junkInstruction != null ) {
47+ holder .descField .setText ("Please dispose of me in the " + junkInstruction + " bin" );
48+ }
49+ }
50+
51+ // total number of rows
52+ @ Override
53+ public int getItemCount () {
54+ return mData .size ();
55+ }
56+
57+
58+ //Stores and recycles views as they are scrolled off screen
59+ public class ViewHolder extends RecyclerView .ViewHolder implements View .OnClickListener {
60+ TextView nameField ;
61+ TextView aliasField ;
62+ TextView descField ;
63+ ViewHolder (View itemView ) {
64+ super (itemView );
65+ nameField = itemView .findViewById (R .id .junkName );
66+ aliasField = itemView .findViewById (R .id .junkAlias );
67+ descField = itemView .findViewById (R .id .junkInstruction );
68+ itemView .setOnClickListener (this );
69+ }
70+
71+ @ Override
72+ public void onClick (View view ) {
73+ if (mClickListener != null ) mClickListener .onItemClick (view , getAdapterPosition ());
74+ }
75+ }
76+
77+ // convenience method for getting data at click position
78+ String getItem (int id ) {
79+ return mData .get (id ).returnName ();
80+ }
81+
82+ // allows clicks events to be caught
83+ void setClickListener (ItemClickListener itemClickListener ) {
84+ this .mClickListener = itemClickListener ;
85+ }
86+
87+ // parent activity will implement this method to respond to click events
88+ public interface ItemClickListener {
89+ void onItemClick (View view , int position );
90+ }
91+ }
0 commit comments