บทความนี้แนะนำตัวอย่างของการเขียน Recyclerview โดยใช้ Kotlin และ Java ตามลำดับ มันถูกแบ่งปันกับคุณ รายละเอียดมีดังนี้:
Java: เช่นเดียวกับวิธีการเขียนทั่วไปแล้วมีการเพิ่มการตอบกลับปุ่ม
MainActivity:
Public Class MainActivity ขยาย AppCompatactivity ใช้ RecyclerAdapter.onitemClickListener {ส่วนตัว Recyclerview MREcycLerview; Private Recyclerview.layoutManager MlayoutManager; RecyclerAdapter ส่วนตัว MRECYCLERADAPTER; Arraylist ลิสต์ส่วนตัว; @Override ป้องกันโมฆะ onCreate (bundlesaved instancestate) {super.oncreate (savedinstancestate); SetContentView (R.Layout.Activity_Main); รายการ RecyclerItem; list = new ArrayList <> (); item = ใหม่ recyclerItem (); item.setName ("ไม่"+0); list.add (รายการ); mrecyclerview = findViewById (r.id.RecycLerview); MRECYCLERADAPTER = ใหม่ RecyclerAdapter (รายการนี้); MRECYCLERADAPTER.SETONITEMCLICKLISTENER (นี่); // สไตล์กริดแนวตั้งหนึ่งรายการต่อบรรทัด mlayoutManager = ใหม่ gridlayoutManager (นี่, 3, Orienthelper.vertical, false); // ตั้งค่าผู้จัดการเค้าโครง mrecyclerview.setlayoutmanager (MlayoutManager); // ตั้งค่าอะแดปเตอร์ mrecyclerview.setAdapter (MRECYCLERADAPTER); // ตั้งค่าภาพเคลื่อนไหวสำหรับการเพิ่มรายการและการลบ mrecyclerview.setItemanimator (newDefaultItemanimator ()); } // ปุ่มของอะแดปเตอร์คลิกเหตุการณ์ @Override โมฆะสาธารณะ onitemContentClick (viewView, intposition) {// คลิกปุ่มสุดท้ายเพื่อเพิ่มรายการถ้า (ตำแหน่ง == list.size ()-1) {recyclerItemitem = newRecyClerItem (); item.setName ("ไม่"+(ตำแหน่ง+1)); list.add (0, รายการ); // อัปเดต Recyclerview mrecycleradapter.updatedata (รายการ); } else {toast.maketext (นี่, "ไม่"+ตำแหน่ง, toast.length_short). show (); -อะแดปเตอร์:
Public Class RecyclerAdapter ขยาย Recyclerview.adapter {ส่วนตัว ArrayList MData; บริบทส่วนตัว McOntext; เอกชน onitemclicklistener onitemclicklistener; โมฆะสาธารณะ setonitemclicklistener (ผู้ฟัง onitemClickListener) {this.onitemClickListener = ผู้ฟัง; } Public RecyclerAdapter (บริบท mcontext, arraylist mdata) {this.mdata = mdata; this.mcontext = mcontext; } // รีเฟรชรายการโมฆะสาธารณะทั้งหมดอัพเดท (ข้อมูล ArrayList) {this.mdata = ข้อมูล; NotifyDatasEtganged (); } // รีเฟรชรายการโลคัลโมฆะสาธารณะอัพเดท updateTaItem (ข้อมูล arrayList, int itemnm) {this.mdata = ข้อมูล; NotifyItemChanged (itemNM); } @Override Public View Holder OnCreateViewHolder (ViewGroup Parent, Int ViewType) {ดู v = layoutInflater.From (parent.getContext ()) Viewholder Viewholder = New Viewholder (V); คืนมุมมอง; } @Override โมฆะสาธารณะ onBindViewholder (ผู้ถือ ViewHolder สุดท้าย, ตำแหน่ง int) {holder.btn.settext (mdata.get (ตำแหน่ง) .getName ()); holder.btn.setonclicklistener (newView.onclickListener () {@Override โมฆะสาธารณะ onClick (ดู v) {ถ้า (onItemClickListener! = null) {int pos = holder.getLayoutposition (); } @Override สาธารณะ int getItemCount () {return mdata == null? 0: mdata.size (); } Viewholder คลาสคงที่ขยาย RecyclerView.Viewholder {ปุ่ม btn; Public Viewholder (ดู itemView) {super (itemview); btn = itemview.findviewbyid (r.id.recycle_name); }} อินเตอร์เฟสสาธารณะ onitemclicklistener {void onitemcontentclick (ดูมุมมองตำแหน่ง int); -RecyclerItem:
คลาสสาธารณะ RecyclerItem {ชื่อสตริง; สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; -กิจกรรม _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/id/@+id/recyclerview Android: background = "#00000000" 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"> Android: layout_height = "wrap_content" Android: layout_centerinparent = "true" Android: text = "No.1"/> </relativelayout>
Kotlin: ไวยากรณ์แตกต่างกันเล็กน้อยการโทร Recyclerview จะคล้ายกัน
MainActivity:
คลาส MainActivity: AppCompatActivity (), MainAdapter.ItemClick {รายการ VAL: MutableList = arrayList () var mainadapter: mainadapter? = null override fun onCreate (savedInstancestate: bundle?) {super.oncreate recyclerItem item = recyclerItem () item.name = "ไม่"+0 items.add (รายการ) val recyclerview = findViewById (r.id.recyclerview) เป็น Recyclerview Recyclerview.layoutManager = GridLayoutManager mainadapter !!. setItemClickListener (นี่) recyclerview.adapter = mainadapter Recyclerview.itemanimator = defaultItemanimator ()} // ปุ่มของอะแดปเตอร์คลิกที่เหตุการณ์สนุก imitemclick (v: ดูตำแหน่ง: int) {ถ้า (ตำแหน่ง = + (ตำแหน่ง + 1) items.add (0, item) // อัปเดตข้อมูล mainadapter !!. updatedata (รายการ)} else {toast.maketext (นี่, items.get (ตำแหน่ง) .name, toast.length_short). show ()}}}}}}Mainadapter:
คลาส Mainadapter: Recyclerview.adapter {รายการ VAR: รายการ? = บริบท null var: บริบท? = null var itemClick: itemClick? = null constructor (รายการ: รายการ, บริบท: บริบท) {this.items = รายการ this.context = บริบท} fun setItemClickListener (itemClick: itemClick) fun onbindviewholder (ผู้ถือ: Viewholder?, ตำแหน่ง: int) {var name = รายการ !! ตำแหน่ง)}})}}} แทนที่ความสนุก getItemCount (): int {รายการส่งคืน !! Viewholder (v) Return Holder} Class Viewholder (itemView: ดู?): RecyclerView.ViewHolder (itemView) {var textName: textView = itemView !!. findViewById (r.id.Recycle_name) -RecyclerItem:
คลาส recyclerItem {ชื่อ var: string = "" get set}กิจกรรม _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/reyclerview Android: background = "#00000000" 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"> Android: layout_height = "wrap_content" Android: layout_centerinparent = "true" Android: text = "No.1"/> </relativelayout>
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น