Cet article présente un exemple d'écriture RecyclerView à l'aide de Kotlin et Java respectivement. Il est partagé avec vous. Les détails sont les suivants:
Java: Tout comme la méthode d'écriture générale, la réponse à bouton a été ajoutée
Mainactivité:
La classe publique MainActivity étend AppCompatActivity implémente recyclerAdapter.onitemClickListener {private recyclerView MRECYCLERVIEW; Recyclerview privé.LayoutManager MlayoutManager; Recycleradapter privé MrecyclerAdapter; Private ArrayListList; @Override Protected void onCreate (Bundlesaved InstanceState) {super.onCreate (SavedInstancEstate); setContentView (r.layout.activity_main); Article RecyclerItem; list = new ArrayList <> (); item = new recyclerItem (); item.setName ("non." + 0); list.add (item); mrecyclerView = findViewByid (r.id.recyclerview); mrecyclerAdapter = new recyclerAdapter (this, list); mrecycleradapter.setonitemClickListener (this); // Style de grille verticale, un élément par ligne mlayoutManager = new GridLayoutManager (this, 3, orientationhelper.vertical, false); // Définir la mise en page MERCYCLERVIEW.SetLayoutManager (MlayoutManager); // Définir l'adaptateur MRECYCLERVIEW.SetAdapter (MrecyclerAdapter); // Définissez l'animation pour l'ajout d'article et la suppression de MrecyclerView.SetIteManImator (newDefaultIteMiMator ()); } // Le bouton de l'adaptateur cliquez sur l'événement @Override public void onItemContentClick (ViewView, intposition) {// cliquez sur le dernier bouton pour ajouter un élément si (position == list.size () - 1) {recyclerItemItem = newRecyclerItem (); item.setName ("non." + (position + 1)); list.add (0, élément); // Mette à jour recyclerView mrecyclerAdapter.updateData (liste); } else {toast.makeText (this, "no." + position, toast.length_short) .show (); }}}Adaptateur:
La classe publique RecyclerAdapter étend RecyclerView.Adapter {private ArrayList mdata; contexte privé mContext; privé ONITEMClickListener ONITEMCLICKListener; public void SetOnItemClickListener (ONITEMClickListener Écouteur) {this.onitemClickListener = écouteur; } public recyclerAdapter (context mContext, arrayList mdata) {this.mdata = mdata; this.mContext = mContext; } // Rafraîchissez l'intégralité de la liste publique void updatedata (arrayList data) {this.mdata = data; notifyDataSetChanged (); } // Rafraîchir la liste locale publique void updatedAtAiTEm (ArrayList Data, int itemnm) {this.mdata = data; notifyItemChanged (itemnm); } @Override Public View Holder OnCreateEViewHolder (ViewGroup Parent, int ViewType) {View v = Layoutinflater.From (Parent.getContext ()). Fine (R.Layout.recycler_item, parent, false); ViewHolder ViewHolder = nouveau ViewHolder (V); RETOUR VIEWHOLDER; } @Override public void OnBindViewHolder (Holder Final ViewHolder, position int) {Holder.Btn.SeTTEXT (mdata.get (position) .getName ()); holder.btn.setOnClickListener (newView.OnClickListener () {@Override public void onClick (View v) {if (onItemClickListener! = null) {int pos = holder.getLayoutPosition (); onItemClickListener.onitemContentClick (holder.itemview, pos);}}}); } @Override public int getItemCount () {return mdata == null? 0: mdata.size (); } public static class ViewHolder étend recyclerView.ViewHolder {Button btn; public ViewHolder (View ItemView) {super (itemView); btn = itemView.FindViewByid (r.id.recycle_name); }} interface publique ONITEMClickListener {void onItemContentClick (vue de vue, position int); }}RecyclerItem:
classe publique recyclerItem {String name; public String getName () {Nom de retour; } public void setName (string name) {this.name = name; }activité_main:
<ndroid.support.v7.widget.recyclerview xmlns: app = "http://schemas.android.com/apk/res-auto" xmlns: tool Outils: context = "com.tudou.recycleViewDemo.MainActivity"> <ndroid.support.v7.widget.recyclerview Android: id = "@ + id / recyclerView" Android: Layout_Width = "Match_parent" Android: Layout_Height = "match_parent" Android: background = "# 000000" Android: PaddingBottom = "5Dip"> </Android.Support.v7.Widget.RecyclerView> </ Android.Support.Constraint.ConstraintLayout>
recycler_item:
<RelativeLayout XMLNS: Android = "http://schemas.android.com/apk/res/android" Android: Layout_Width = "100DP" Android: Layout_Height = "100DP"> <Button Android: id = "@ + id / recycle_name" Android: Layout_width = "wir_clent" Android: Layout_Height = "Wrap_Content" Android: Layout_CenteRenparent = "true" Android: Text = "No.1" /> </ RelativeLayout>
Kotlin: La syntaxe est légèrement différente, l'appel RecyclerView est similaire
Mainactivité:
Class MainActivity: AppCompatActivity (), mainadapter.itemClick {Val items: mutableList = ArrayList () var MainAdapter: MainAdapter? = Null Override Fun OnCreate (SavedInstancetate: Bundle?) {Super.oncreate (SavedInstancEstate) SetContentView (R.Layout. item = recyclerItem () item.name = "no." + 0 items.add (item) val recyclerView = findViewByid (r.id.recyclerView) en tant que recyclerView recyclerView.layoutManager = gridLayoutManager (this, 3, orientationhelper.verttic mainadapter !!. setItemClickListener (this) recyclerView.Adapter = mainadapter recyclerView.ItemanImator = defaultIteMimator ()} // Button de l'adaptateur cliquez sur l'événement Override Fun ONItemClick (V: VALLE) + (position + 1) items.add (0, item) // Mettez à jour les données mainAdapter !!. UpdatedAdata (items)} else {toast.maketext (this, items.get (position) .name, toast.length_short) .show ()}}}.MainAdapter:
classe MainAdapter: recyclerView.adapter {var items: liste? = Null var Context: Context? = null var itemclick: itemclick? = null constructor (items: list, context: context) {this.items = items this.context = context} fun setItemClickListener (itemclick: itemclick) {this.itemclick = itemclick} fun updatedata (items: list) {this.items = items) onbindViewHolder (Holder: ViewHolder?, position: int) {var name = items !!. get (position) .name if (holder! = null) {holder.textName.setText (name) Holder.TextName.setOnclickListener (voir.onclickListener {if (itemclick! = null) {itemclick !!. }}} Override Fun getItemCount (): int {return items !!. Size} Override Fun OnCreateViewHolder (Parent: ViewGroup?, ViewType: Int): ViewHolder {val v = Layoutinflater.From (parent !!. Context) .Inflate (R.Layout.recycler_Item, Parent, False) As RelayAut ViewHolder (itemView: View?): RecyclerView.ViewHolder (itemView) {var textName: textView = itemView !!. FindViewByid (r.id.recycle_name) comme textView} interface élémentclick {fun onitemClick (v: View, position: int); }}RecyclerItem:
classe recyclerItem {var name: string = "" get set}activité_main:
<ndroid.support.constraint.constraintlayout xmlns: app = "http://schemas.android.com/apk/res-auto" xmlns: tool Outils: context = "com.tudo.kotlintdemo.mainactivity"> <ndroid.support.v7.widget.recyclerview Android: id = "@ + id / recyclerView" Android: Layout_Width = "Match_parent" Android: Layout_Height = "match_parent" Android: background = "# 000000" Android: PaddingBottom = "5Dip"> </Android.Support.v7.Widget.RecyclerView> </ Android.Support.Constraint.ConstraintLayout>
recycler_item:
<LeativeLayout> xmlns: Android = "http://schemas.android.com/apk/res/android" Android: Layout_Width = "100DP" Android: Layout_Height = "100DP"> <Button Android: id = "@ + id / recycle_name" Android: Layout_width = "wir_conent" Android: Layout_Height = "Wrap_Content" Android: Layout_CenteRenparent = "true" Android: Text = "No.1" /> </ RelativeLayout>
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.