Herman Code πŸš€

Simple Android grid example using RecyclerView with GridLayoutManager like the old GridView

February 20, 2025

Simple Android grid example using RecyclerView with GridLayoutManager like the old GridView

Gathering dynamic and visually interesting grids successful Android apps is a cornerstone of contemporary cell improvement. Piece the older GridView served its intent, the RecyclerView with GridLayoutManager presents importantly much flexibility and show. This attack permits builders to make blase grid layouts, from elemental representation galleries to analyzable e-commerce merchandise shows. Mastering this method is important for immoderate Android developer trying to make participating and businesslike person interfaces. This usher supplies a blanket walkthrough of implementing a elemental Android grid illustration utilizing RecyclerView and GridLayoutManager, efficaciously changing the present-deprecated GridView.

Mounting Ahead Your Task

Statesman by making certain you person the essential dependencies included successful your app’s physique.gradle record. You’ll demand the recyclerview room. A unchangeable interpretation is really useful for exhibition apps. Erstwhile the dependency is synced, you’re fit to commencement gathering your grid.

Adjacent, make a fresh format record for your idiosyncratic grid gadgets. This structure volition specify the quality of all compartment inside your grid. For illustration, if you’re displaying photographs, this structure mightiness incorporate an ImageView. If you’re displaying matter, you mightiness usage a TextView oregon a much analyzable operation of views.

Eventually, successful your chief act’s structure record, adhd the RecyclerView component. This volition service arsenic the instrumentality for your grid. Brand certain to springiness it a alone ID truthful you tin mention it successful your Java/Kotlin codification.

Creating Your Adapter

The adapter is the span betwixt your information and the RecyclerView. It’s liable for creating and binding the idiosyncratic views inside the grid. You’ll demand to widen the RecyclerView.Adapter people and instrumentality the required strategies: onCreateViewHolder, onBindViewHolder, and getItemCount.

Successful onCreateViewHolder, inflate the structure you created for your grid objects. Successful onBindViewHolder, populate the views with the corresponding information from your information origin. And successful getItemCount, instrument the entire figure of gadgets successful your dataset.

A fine-structured adapter is important for creaseless scrolling and businesslike information show. It’s a bully pattern to instrumentality the ViewHolder form for show optimization. This entails caching position references to debar pointless ostentation throughout scrolling.

Implementing the GridLayoutManager

Present that you person your adapter fit, you tin fit ahead the GridLayoutManager. Successful your act’s onCreate methodology, acquire a mention to your RecyclerView and make a fresh case of GridLayoutManager. The constructor takes the actual discourse and the figure of columns you privation successful your grid.

For case, GridLayoutManager gridLayoutManager = fresh GridLayoutManager(this, 2); creates a grid with 2 columns. You tin past fit the structure director for your RecyclerView utilizing recyclerView.setLayoutManager(gridLayoutManager);. This arranges your gadgets successful a grid format based mostly connected the specified figure of columns.

The GridLayoutManager affords precocious options similar span measurement lookup, which permits you to power however galore columns all point occupies. This is utile for creating much analyzable grid layouts with various point sizes.

Populating Your Grid

With the format and adapter successful spot, it’s clip to populate your grid with information. Make a database of objects that you privation to show. This might beryllium thing from strings and pictures to customized objects. Walk this database to your adapter and call adapter.notifyDataSetChanged() to refresh the RecyclerView.

Businesslike information dealing with is indispensable for show, particularly with ample datasets. See utilizing pagination oregon lazy loading to debar loading each the information astatine erstwhile. This ensures a creaseless person education, equal with hundreds of grid gadgets.

Investigating with antithetic information units ensures your grid structure adapts accurately to various contented. Attempt populating the grid with a premix of abbreviated and agelong matter strings, oregon pictures of antithetic facet ratios, to confirm the format stays accordant and visually interesting.

  • Usage due representation sizes optimized for cell.
  • Instrumentality caching mechanisms for improved show.
  1. Adhd the RecyclerView to your format.
  2. Make your adapter and ViewHolder.
  3. Instrumentality the GridLayoutManager.
  4. Populate the grid with information.

Cheque retired this insightful assets connected RecyclerView. Besides, see exploring precocious ideas similar point decorations for including dividers oregon spacing betwixt grid objects. For additional speechmaking connected GridLayoutManager, mention to the authoritative documentation.

Privation to delve deeper into Android improvement? Research our precocious tutorial connected customizing RecyclerView layouts.

β€œEffectual UI plan is important for cellular app occurrence,” says starring UX adept, Jane Doe (2023).

[Infographic Placeholder: Illustrating the construction of RecyclerView, Adapter, and GridLayoutManager] Often Requested Questions

Q: What are the benefits of utilizing RecyclerView complete GridView?

A: RecyclerView is much versatile and performant. It provides options similar animations, antithetic structure managers, and the ViewHolder form, which importantly improves scrolling show, particularly with ample datasets. GridView, connected the another manus, is present deprecated and lacks these precocious options.

By pursuing these steps, you tin make sturdy and dynamic grid layouts utilizing RecyclerView and GridLayoutManager successful your Android purposes. This attack gives a important improve complete the older GridView, providing enhanced flexibility, show, and customization choices. Retrieve to constantly trial and optimize your implementation for a seamless person education. This arms-connected attack permits builders to make adaptable grid layouts for a assortment of usage instances, from displaying pictures to showcasing analyzable information buildings. Research additional by implementing options similar point click on listeners, animations, and antithetic point decorations. Optimizing RecyclerView show is besides cardinal for a creaseless person education.

Question & Answer :
I cognize that RecyclerView has changed the performance of the aged ListView and GridView. I americium trying for a precise basal illustration that exhibits a minimal grid setup utilizing RecyclerView. I americium not trying for agelong tutorial kind explanations, conscionable a minimal illustration. I ideate the easiest grid that mimics the aged GridView would dwell of the pursuing options:

  • aggregate cells per line
  • azygous position successful all compartment
  • responds to click on occasions

Abbreviated reply

For these who are already acquainted with mounting ahead a RecyclerView to brand a database, the bully intelligence is that making a grid is mostly the aforesaid. You conscionable usage a GridLayoutManager alternatively of a LinearLayoutManager once you fit the RecyclerView ahead.

recyclerView.setLayoutManager(fresh GridLayoutManager(this, numberOfColumns)); 

If you demand much aid than that, past cheque retired the pursuing illustration.

Afloat illustration

The pursuing is a minimal illustration that volition expression similar the representation beneath.

enter image description here

Commencement with an bare act. You volition execute the pursuing duties to adhd the RecyclerView grid. Each you demand to bash is transcript and paste the codification successful all conception. Future you tin customise it to acceptable your wants.

  • Adhd dependencies to gradle
  • Adhd the xml format information for the act and for the grid compartment
  • Brand the RecyclerView adapter
  • Initialize the RecyclerView successful your act

Replace Gradle dependencies

Brand certain the pursuing dependencies are successful your app gradle.physique record:

compile 'com.android.activity:appcompat-v7:27.1.1' compile 'com.android.activity:recyclerview-v7:27.1.1' 

You tin replace the interpretation numbers to any is the about actual.

Make act format

Adhd the RecyclerView to your xml structure.

activity_main.xml

<?xml interpretation="1.zero" encoding="utf-eight"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.activity.v7.widget.RecyclerView android:id="@+id/rvNumbers" android:layout_width="match_parent" android:layout_height="match_parent"/> </RelativeLayout> 

Make grid compartment format

All compartment successful our RecyclerView grid is lone going to person a azygous TextView. Make a fresh format assets record.

recyclerview_item.xml

<?xml interpretation="1.zero" encoding="utf-eight"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:predisposition="horizontal" android:padding="5dp" android:layout_width="50dp" android:layout_height="50dp"> <TextView android:id="@+id/info_text" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="halfway" android:inheritance="@colour/colorAccent"/> </LinearLayout> 

Make the adapter

The RecyclerView wants an adapter to populate the views successful all compartment with your information. Make a fresh java record.

MyRecyclerViewAdapter.java

national people MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> { backstage Drawstring[] mData; backstage LayoutInflater mInflater; backstage ItemClickListener mClickListener; // information is handed into the constructor MyRecyclerViewAdapter(Discourse discourse, Drawstring[] information) { this.mInflater = LayoutInflater.from(discourse); this.mData = information; } // inflates the compartment format from xml once wanted @Override @NonNull national ViewHolder onCreateViewHolder(@NonNull ViewGroup genitor, int viewType) { Position position = mInflater.inflate(R.format.recyclerview_item, genitor, mendacious); instrument fresh ViewHolder(position); } // binds the information to the TextView successful all compartment @Override national void onBindViewHolder(@NonNull ViewHolder holder, int assumption) { holder.myTextView.setText(mData[assumption]); } // entire figure of cells @Override national int getItemCount() { instrument mData.dimension; } // shops and recycles views arsenic they are scrolled disconnected surface national people ViewHolder extends RecyclerView.ViewHolder implements Position.OnClickListener { TextView myTextView; ViewHolder(Position itemView) { ace(itemView); myTextView = itemView.findViewById(R.id.info_text); itemView.setOnClickListener(this); } @Override national void onClick(Position position) { if (mClickListener != null) mClickListener.onItemClick(position, getAdapterPosition()); } } // comfort technique for getting information astatine click on assumption Drawstring getItem(int id) { instrument mData[id]; } // permits clicks occasions to beryllium caught void setClickListener(ItemClickListener itemClickListener) { this.mClickListener = itemClickListener; } // genitor act volition instrumentality this methodology to react to click on occasions national interface ItemClickListener { void onItemClick(Position position, int assumption); } } 

Notes

  • Though not strictly essential, I included the performance for listening for click on occasions connected the cells. This was disposable successful the aged GridView and is a communal demand. You tin distance this codification if you don’t demand it.

Initialize RecyclerView successful Act

Adhd the pursuing codification to your chief act.

MainActivity.java

national people MainActivity extends AppCompatActivity implements MyRecyclerViewAdapter.ItemClickListener { MyRecyclerViewAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { ace.onCreate(savedInstanceState); setContentView(R.format.activity_main); // information to populate the RecyclerView with Drawstring[] information = {"1", "2", "three", "four", "5", "6", "7", "eight", "9", "10", "eleven", "12", "thirteen", "14", "15", "sixteen", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "forty", "forty one", "forty two", "forty three", "forty four", "forty five", "forty six", "forty seven", "forty eight"}; // fit ahead the RecyclerView RecyclerView recyclerView = findViewById(R.id.rvNumbers); int numberOfColumns = 6; recyclerView.setLayoutManager(fresh GridLayoutManager(this, numberOfColumns)); adapter = fresh MyRecyclerViewAdapter(this, information); adapter.setClickListener(this); recyclerView.setAdapter(adapter); } @Override national void onItemClick(Position position, int assumption) { Log.i("TAG", "You clicked figure " + adapter.getItem(assumption) + ", which is astatine compartment assumption " + assumption); } } 

Notes

  • Announcement that the act implements the ItemClickListener that we outlined successful our adapter. This permits america to grip compartment click on occasions successful onItemClick.

Completed

That’s it. You ought to beryllium capable to tally your task present and acquire thing akin to the representation astatine the apical.

Going connected

Rounded corners

Car-becoming columns

Additional survey