Este artigo apresenta um exemplo de redação do RecyclerView usando Kotlin e Java, respectivamente. É compartilhado com você. Os detalhes são os seguintes:
Java: Assim como o método de escrita geral, a resposta do botão foi adicionada
MainActivity:
A classe pública MainActivity estende o appCompatactivity implementa recycleradapter.oniTemClickListener {private RecyclerView mRecycLerView; Private RecyclerView.LayoutManager MlayoutManager; Recycleradapter privado mRecycleradapter; Private ArrayListlist; @Override Protected void onCreate (instancestado agitado) {super.oCreate (savedInstancestate); setContentView (r.layout.activity_main); Item de recicleritem; list = new ArrayList <> (); item = new Recycleritem (); item.setName ("no."+0); list.add (item); mRecycLerview = findViewById (R.id.RecyclerView); mRecycleRadapter = new Recycleradapter (esta, lista); mRecycleRadapter.setonItemClickListener (isto); // estilo de grade vertical, um item por linha mlayoutManager = new GridLayoutManager (this, 3, orientaçãohelper.vertical, false); // Definir gerenciador de layout mRecyclerview.setLayoutManager (MlayoutManager); // Definir adaptador mRecyclerview.setAdapter (mRecycleradapter); // Defina a animação para adição e remoção de itens mRecyclerView.setImemanimator (newDefaultitemanImator ()); } // Botão do adaptador Clique em Evento @Override public void oniTemContentClick (ViewView, IntPosition) {// Clique no último botão para adicionar um item se (position == list.size ()-1) {Recycleritemitem = newRecycleritem (); item.setName ("Não."+(posição+1)); list.add (0, item); // Update RecyclerView mRecycleRadapter.UpDatedata (List); } else {Toast.MakeText (isto, "não."+Posição, Toast.Length_Short) .Show (); }}}Adaptador:
classe pública Recycleradapter estende RecyclerView.Adapter {Private ArrayList Mdata; Contexto privado McOntext; private oniTemClickListener oniTemClickListener; public void setonItemClickListener (OniTemClickListener ouvinte) {this.oniTemClickListener = ouvinte; } public recycleradapter (context mcOntext, ArrayList mdata) {this.mdata = mdata; this.mContext = mcOntext; } // Atualizar a lista inteira public void updateTata (dados do ArrayList) {this.mdata = data; notifyDataSetchanged (); } // Atualizar a lista local public void updateTaitem (dados do ArrayList, int itemNM) {this.mdata = data; notifyItemChanged (itemNM); } @Override Public View Holder OnCreateViewHolder (ViewGroup Parent, int ViewType) {View V = layoutInflater.from (parent.getContext ()). Inflate (r.layout.recycler_item, pai, false); ViewHolder ViewHolder = New Viewholder (V); Return Viewholder; } @Override public void onBindViewHolder (titular do viewholder final, posição int) {holder.btn.settext (mdata.get (posição) .getName ()); holder.btn.setOnClickListener (newView.OnClickListener () {@Override public void OnClick (view v) {if (oniTemClickListener! = null) {int pS = holder.getLayoutPosition (); oniTemClickListener.onitemCoTentClick (SoltClick.ItLay (); } @Override public int getItemCount () {return mdata == null? 0: mdata.size (); } classe estática pública ViewHolder estende RecyclerView.ViewHolder {Button btn; public ViewHolder (View ItemView) {super (itemView); btn = itemView.findViewById (r.id.recycle_name); }} interface pública oniTemClickListener {void oniTemContentClick (Visualizar, Int Position); }}Recycleritem:
classe pública Recycleritem {Nome da String; public String getName () {Return Name; } public void setName (nome da string) {this.name = name; }Atividade_main:
<ndroid.support.v7.widget.recyclerview xmlns: App = "http://schemas.android.com/apk/res-auto" xmlns: ferramentas = "http://schema.android.com/tools" Android: Android: http://schema.android.com/tools "Android: android:layout_height="match_parent" tools:context="com.tudou.recycleviewdemo.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" Android: Background = "#00000000" Android: PaddingBottom = "5DIP"> </ndroid.support.v7.widget.recyclerview> </android.support.constraint.constraintlayout>
recycler_item:
<Relativeyout xmlns: Android = "http://schemas.android.com/apk/res/android" Android: layout_width = "100dp" Android: Layout_Height = "100DP"> <Buttonid: ID = "@+id/Recycle_ame Android: Layout_Height = "WRAP_CONTENT" Android: Layout_CenterinParent = "True" Android: text = "No.1"/> </lativeLayout>
Kotlin: A sintaxe é um pouco diferente, a chamada de reciclView é semelhante
MainActivity:
Classe MainActivity: AppCompatactivity (), MainAdapter.itemClick {Val itens: mutableList = ArrayList () var MainAdapter: MainAdapter? = Substitua nula Fun OnCreate (SavedInstancestate: Bundle?) {Super.oncreate (SavedInStoSTATATE) SetContentate (R.LeyCaTerM) {Super.oncreate (SavedInStoSTATE) SetContentate (R.LeyCaTeM) {Super.oncreate (SavedInSToSate) SetContate (R.LayyCaTeM. item = RecyclerItem() item.name = "No."+0 items.add(item) val recyclerView = findViewById(R.id.recyclerView) as RecyclerView recyclerView.layoutManager = GridLayoutManager(this, 3, OrientationHelper.VERTICAL, false) mainAdapter=MainAdapter(items, this) MainAdapter !!. SetItemClickListener (this) RecyclerView.Adapter = MainAdapter RecyclerView.itemanimator = defaultitemanImator ()} // Botão do adaptador Clique em Evento Substitua (ItemMaMen) {Val (V: Visune, Position: int) {if (position == items.size - 1) {Val {Val) + (posição + 1) items.add (0, item) // Atualize os dados MainAdapter !!. UpdateTata (itens)} else {Toast.MakeText (this, items.get (position) .Name, Toast.Length_short) .Show ()}}}MainAdapter:
Classe MainAdapter: RecyclerView.adapter {var Itens: List? = nulo var context: context? = nulo var itemclick: itemclick? = Construtor nulo (itens: listar, contexto: context) {this.items = itens this.Context = context} FUNTItemClickListener (itemClick: itemclick) {this.itemClick = ItemClick} FUNTATATATA (itens:) {this.itemClick = ItemClick} FUNTATATATA (itens:) {this.itemClick =tEmClick} FUNTATATATA (itens:) {this.iTemClick Fun OnBindViewHolder (titular: Viewholder?, posição: int) {var name = itens !!. Get (position) .Nome if (holder! = null) {holder.textname.settext (nome) holder.textname.setOnClickListener (View.onClicklickEner {if (itemClick! }}})}}} substitua Fun GetItemCount (): int {retorna itens !!. Tamanho} Substitua -se divertido onCreatieViewHolder (pai: ViewGroup?, ViewType: int): ViewHolder {val V = LayoutInflater.From (Parent !!. Retorno titular} classe ViewHolder (ItemView: View?): Recyclerview.ViewHolder (ItemView) {var textName: textView = ItemView !!. FindViewById (r.id.recycle_name) como textview} interface itemclick {fun oniTemClick (v: view, posição: int); }}Recycleritem:
classe Recycleritem {var name: string = "" Get Set}Atividade_main:
<android.support.constraint.constraintlayout xmlns: App = "http://schemas.android.com/apk/res-auto" xmlns: ferramentas = "http://schemas.android.com/tools" Android: Layout_Wid_Widthth = " android:layout_height="match_parent" tools:context="com.tudo.kotlintdemo.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" Android: Background = "#00000000" Android: PaddingBottom = "5DIP"> </ndroid.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="wrap_content" Android: Layout_Height = "WRAP_CONTENT" Android: Layout_CenterinParent = "True" Android: text = "No.1"/> </lativeLayout>
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.