Περισσότερα
Απλό παράδειγμα πλέγματος Android χρησιμοποιώντας RecyclerView με GridLayoutManager (όπως το παλιό GridView)
Γνωρίζω ότι το RecyclerView
έχει αντικαταστήσει τη λειτουργικότητα των παλαιών ListView
και GridView
. Ψάχνω για ένα πολύ βασικό παράδειγμα που να δείχνει μια ελάχιστη ρύθμιση πλέγματος χρησιμοποιώντας το RecyclerView
. Δεν ψάχνω για μακροσκελείς επεξηγήσεις σε στυλ σεμιναρίου, απλώς ένα ελάχιστο παράδειγμα. Φαντάζομαι ότι το απλούστερο πλέγμα που μιμείται το παλιό GridView θα αποτελείται από τα ακόλουθα χαρακτηριστικά:
- πολλαπλά κελιά ανά γραμμή
- ενιαία προβολή σε κάθε κελί
- ανταποκρίνεται σε συμβάντα κλικ
181
3
Short answer
Για όσους είναι ήδη εξοικειωμένοι με τη δημιουργία ενός
RecyclerView
για να φτιάξετε μια λίστα, τα καλά νέα είναι ότι η δημιουργία ενός πλέγματος είναι σε μεγάλο βαθμό η ίδια. Απλά χρησιμοποιείτε ένανGridLayoutManager
αντί για ένανLinearLayoutManager
όταν στήνετε τοRecyclerView
.Αν χρειάζεστε περισσότερη βοήθεια από αυτό, τότε δείτε το ακόλουθο παράδειγμα.
Πλήρες παράδειγμα
Το παρακάτω είναι ένα ελάχιστο παράδειγμα που θα μοιάζει με την παρακάτω εικόνα.
2
Ξεκινήστε με μια κενή δραστηριότητα. Θα εκτελέσετε τις ακόλουθες εργασίες για να προσθέσετε το πλέγμα
RecyclerView
. Το μόνο που χρειάζεται να κάνετε είναι να αντιγράψετε και να επικολλήσετε τον κώδικα σε κάθε ενότητα. Αργότερα μπορείτε να τον προσαρμόσετε ανάλογα με τις ανάγκες σας.Ενημερώστε τις εξαρτήσεις Gradle
Βεβαιωθείτε ότι οι ακόλουθες εξαρτήσεις βρίσκονται στο αρχείο
gradle.build
της εφαρμογής σας:Μπορείτε να ενημερώσετε τους αριθμούς εκδόσεων σε όποια είναι η πιο πρόσφατη.
Create activity layout
Προσθέστε το
RecyclerView
στη διάταξη xml.activity_main.xml
Create grid cell layout
Κάθε κελί στο πλέγμα μας
RecyclerView
θα έχει μόνο έναTextView
. Δημιουργήστε ένα νέο αρχείο πόρων διάταξης.recyclerview_item.xml
Δημιουργήστε τον προσαρμογέα
Το
RecyclerView
χρειάζεται έναν προσαρμογέα για να γεμίζει τις προβολές σε κάθε κελί με τα δεδομένα σας. Δημιουργήστε ένα νέο αρχείο java.MyRecyclerViewAdapter.java
Σημειώσεις
GridView
και είναι μια κοινή ανάγκη. Μπορείτε να αφαιρέσετε αυτόν τον κώδικα αν δεν τον χρειάζεστε.Αρχικοποίηση του RecyclerView στη δραστηριότητα
Προσθέστε τον ακόλουθο κώδικα στην κύρια δραστηριότητά σας.
MainActivity.java
Σημειώσεις
ItemClickListener
που ορίσαμε στον προσαρμογέα μας. Αυτό μας επιτρέπει να χειριζόμαστε γεγονότα κλικ κελιών στοonItemClick
.Finished
Αυτό είναι όλο. Θα πρέπει να είστε σε θέση να εκτελέσετε το έργο σας τώρα και να πάρετε κάτι παρόμοιο με την εικόνα στην κορυφή.
Going on
Στρογγυλεμένες γωνίες
Αυτόματη προσαρμογή στηλών
Περαιτέρω μελέτη
Παρόλο που μου αρέσει και εκτιμώ την απάντηση του Suragch's, θα ήθελα να αφήσω μια σημείωση επειδή διαπίστωσα ότι η κωδικοποίηση του Adapter (
MyRecyclerViewAdapter
) για τον ορισμό και την έκθεση της μεθόδου ListeneronItemClick
δεν είναι ο καλύτερος τρόπος για να το κάνετε, λόγω της μη σωστής χρήσης της ενθυλάκωσης της κλάσης. Έτσι, η πρότασή μου είναι να αφήσετε τον Adapter να χειριστεί τις λειτουργίες Listening αποκλειστικά (αυτός'είναι ο σκοπός του!) και να τις διαχωρίσετε από τη Δραστηριότητα που χρησιμοποιεί τον Adapter (MainActivity
). Έτσι, λοιπόν, με τον εξής τρόπο θα όριζα την κλάση Adapter:MyRecyclerViewAdapter.java
Παρακαλούμε σημειώστε τη μέθοδο
onItemClick
που ορίζεται τώρα στοMyRecyclerViewAdapter
και είναι το μέρος όπου θα θέλατε να κωδικοποιήσετε τις εργασίες σας για το γεγονός/δράση που λαμβάνετε.Υπάρχει μόνο μια μικρή αλλαγή που πρέπει να γίνει για να ολοκληρωθεί αυτός ο μετασχηματισμός: η Activity δεν χρειάζεται πλέον να υλοποιεί την
MyRecyclerViewAdapter.ItemClickListener
, επειδή τώρα αυτό γίνεται εξ ολοκλήρου από τον Adapter. Αυτή θα ήταν τότε η τελική τροποποίηση:MainActivity.java
Πρέπει να ορίσετε τον διαχειριστή διάταξης recyclerview σας σε λειτουργία Gridlayout, για να το κάνετε αυτό απλά αλλάξτε τον κώδικά σας όταν θέλετε να ορίσετε τον διαχειριστή διάταξης RecyclerView σας:
Σημείωση: αντικαταστήστε τον αριθμό των στηλών σας που θέλετε με ###HELP###