この記事では、それぞれKotlinとJavaを使用してRecyclerviewを書く例を紹介します。それはあなたと共有されます。詳細は次のとおりです。
Java:一般的な書き込み方法と同じように、ボタンの応答が追加されました
MainActivity:
パブリッククラスのMainActivityは、AppCompatactivityを実装しますRecyclerAdapter.OnitemClickListener {Private Recyclerview Mrecyclerview; Private Recyclerview.layoutmanager mlayoutmanager;プライベートリサイクルラダプターmrecycleradapter;プライベートArrayListList; @Override Protected void oncreate(bundlesaved instancestate){super.oncreate(savedinstancestate); setContentView(r.layout.activity_main); Recycleritemアイテム; list = new ArrayList <>(); item = new Recycleritem(); item.setName( "no。"+0); list.add(item); mrecyclerview = findviewbyid(r.id.Recyclerview); mrecycleradapter = new RecyclerAdapter(これ、リスト); mrecycleradapter.setonitemclicklistener(this); //垂直グリッドスタイル、1行ごとに1つのアイテムmlayoutmanager = new gridlayoutmanager(this、3、orientationhelper.vertical、false); //レイアウトマネージャーmrecyclerview.setlayoutmanager(mlayoutmanager)を設定します。 // adapter mrecyclerview.setadapter(mrecycleradapter)を設定します。 //アイテムの追加および削除のためにアニメーションを設定するmrecyclerview.setiteManimator(newDefaultIteManimator()); } //アダプターのボタンクリックイベント@Override public void onitemcontentclick(viewView、intposition){//最後のボタンをクリックしてアイテムを追加します(position == list.size() - 1){recycleritemitem = newRecyclerItem(); item.setName( "no。"+(position+1)); list.add(0、item); // recyclerview mrecycleradapter.updatedata(list)を更新します。 } else {toast.maketext(this、 "no。"+position、toast.length_short).show(); }}}アダプタ:
Public Class RecyclerAdapterはRecyclerView.Adapterを拡張します{Private ArrayList MDATA;プライベートコンテキストmcontext; private onitemclicklistener onitemclicklistener; public void setonitemclicklistener(onitemclicklistenerリスナー){this.onitemclicklistener = listener; } public recycleradapter(Context Mcontext、ArrayList MData){this.mdata = mdata; this.mcontext = mcontext; } //リスト全体を更新public public void updatedata(arraylist data){this.mdata = data; notifyDataSeTchanged(); } //ローカルリストの更新public void updatedataitem(arrayList data、int itemnm){this.mdata = data; notifyItemChanged(itemnm); } @Override public View Holder oncreateviewHolder(ViewGroup Parent、int ViewType){View V = layoutinflater.from(parent.getContext())。 ViewHolder Viewholder = new Viewholder(v); return Viewholder; } @Override public void onbindViewHolder(最終ビューホルダー、int position){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 eem } @Override public int getItemCount(){return mdata == null? 0:mdata.size(); } public staticクラスビューホルダーは、recyclerview.viewholder {button btn; public Viewholder(view itemview){super(itemview); btn = itemview.findviewbyid(r.id.recycle_name); }} public interface onitemclicklistener {void onitemcontentClick(ビュービュー、int position); }}Recycleritem:
Public Class Recycleritem {String name; public string getName(){return name; } public void setName(string name){this.name = name; }Activity_main:
<android.support.v7.widget.Recyclerview XMLNS:app = "http://schemas.android.com/apk/res-auto" xmlns:tools = "http://schemas.android.com/tools" android:layout_height = "match_parent"ツール:Context = "com.tudou.recycleviewdemo.mainactivity"> <android.support.v7.widget.recyclerview android:id = "@+id/recyclerview" 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/id" android: "android:" android: "android:" android: "android:" Android:layout_height = "wrap_content" android:layout_centerinparent = "true" android:text = "no.1"/> </relativelayout>
Kotlin:構文はわずかに異なり、Recyclerviewコールは似ています
MainActivity:
クラスMainActivity:AppCompatactivity()、MainAdapter.ItemClick {val items:mutablelist = arraylist()var mainadapter:mainadapter?= null override on fun oncreate(savedinstancestate:bundle?){super.oncreate(savedinstanceState)setContenttate(r.layout.ictived.ictived.ictived.ictiveted. recycleritem item = recycleritem()item.name = "no。"+0 items.add(item)val recyclerview = findviewbyid(r.id.recyclerview)as recyclerview recyclerview.layoutmanager = gridlayoutmanager(this、3、orientationhelper.vertical、fals MainAdapter !!。setitemclicklistener(この)recyclerview.adapter = mainadapter recyclerview.itemanimator = default manimator()} // adapter's button click event event onitemclick(v:view、position:int){if(position == items.size -1){val = recycleritem( +(position + 1)items.add(0、item)//データMainadapter !!。updatedata(item)} else {toast.maketext(this、items.get(position).name、toast.length_short).show()}}}}}MainAdapter:
クラスmainadapter:recyclerview.adapter {var items:list? = null var context:context?= null var itemclick:itemclick?= null constructor(items:list、context:context:this.items = items this.context = context} fun setitemclicklistener(itemclick:itemclick:itemclick = itemclick = itemclick} emprodata(itemsems){itemed(itemet){thisemta) onbindviewholder(Holder:Viewholder?、position:int){var name = items !!。 itemclick !!。onitemclick(holder.itemview、position)}} layoutinflater.from(parent !!。コンテキスト).inflate(r.layout.Recycler_item、parent、false)aslativalayout val Holder = viewholder(v)return holder} class Viewholder(view:view?):recyclerview.viewholder(itemview){var textname:itemview =項目!!。 textView} interface itemclick {fun onitemclick(v:view、position:int); }}Recycleritem:
class recycleritem {var name:string = "" get set}Activity_main:
<android.support.constraint.constraintlayout xmlns:app = "http://schemas.android.com/apk/res-auto" xmlns:tools = "http://schemas.android.com/tools" Android:layout_height = "match_parent"ツール:Context = "com.tudo.kotlintdemo.mainactivity"> <android.support.v7.widget.Recyclerview Android:id = "@+id/recyclerView" 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="wrap_content" Android:layout_height = "wrap_content" android:layout_centerinparent = "true" android:text = "no.1"/> </relativelayout>
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。