이 기사는 각각 Kotlin과 Java를 사용하여 Recyclerview를 작성하는 예를 소개합니다. 그것은 당신과 공유됩니다. 세부 사항은 다음과 같습니다.
Java : 일반 쓰기 방법과 마찬가지로 버튼 응답이 추가되었습니다.
MainActivity :
공개 클래스 Mainactivity 확장 AppCompatactivity emplements Recycleradapter.onitemClicklistener {private RecyclerView mrecyclerView; Private RecyclerView.layoutManager mlayoutManager; 비공개 재활용 라드 랩터 MRECYCLERADAPTER; 개인 ArrayListList; @override protected void onecreate (bundlesaved instancestate) {super.oncreate (savedinstancestate); setContentView (R.Layout.Activity_Main); Recycleritem 항목; list = new ArrayList <> (); item = new Recycleritem (); item.setName ( "아니오"+0); list.add (항목); mrecyclerview = findViewById (r.id.recyclerView); mrecycleradapter = 새로운 재활용 사도터 (this, list); mrecycleradapter.setonitemclicklistener (this); // 세로 그리드 스타일, 한 줄 당 하나의 항목 mlayoutManager = new GridLayoutManager (this, 3, OrientationHelper.Vertical, False); // 레이아웃 관리자 설정 mrecyclerView.setLayoutManager (mlayoutManager); // 어댑터 설정 mrecyclerview.setAdapter (mrecycleradapter); // 항목 추가 및 제거에 대한 애니메이션 설정 mrecyclerview.setitemanimator (newDefaultItManimator ()); } // 어댑터의 버튼 클릭 이벤트 @override public void onitemContentClick (viewView, intPosition) {// 마지막 버튼을 클릭하여 항목을 추가하려면 (위치 == list.size () -1) {recycleritemitem = newRecyCleritem (); item.setName ( "아니오"+(위치+1)); list.add (0, 항목); // RECYCLERVIEW 업데이트 MRECYCLERADAPTER.UPDATEDATA (list); } else {토스트 .maketext (this, "no."+position, toast.length_short) .show (); }}}어댑터:
공개 클래스 RecyclerAdapter 확장 recyclerview.adapter {private arraylist mdata; 개인 컨텍스트 McOntext; 개인 onitemClicklistener onitemClickListener; public void setonitemclicklistener (onitemclicklistener 리스너) {this.onitemclicklistener = 리스너; } public RecyclerAdapter (컨텍스트 McOntext, arraylist mdata) {this.mdata = mdata; this.mcontext = mcontext; } // 전체 목록을 새로 고쳐 공개 void updatedata (arraylist data) {this.mdata = data; notifyDataSetchanged (); } // 로컬 목록을 새로 고침 Public void updateataitem (arraylist data, 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, parent, false); Viewholder Viewholder = New Viewholder (V); 리턴 뷰 홀더; } @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 (holitemContentClick (holitemContentClick)); } @override public int getItemCount () {return mdata == null? 0 : mdata.size (); } public static class viewholder 확장 recyclerview.viewholder {button btn; 공개 뷰 보유자 (View ItemView) {Super (ItemView); btn = itemview.findViewById (r.id.recycle_name); }} 공개 인터페이스 OnitemClickListener {void onitemContentClick (보기보기, int 위치); }}Recycleritem :
공개 클래스 Recycleritem {문자열 이름; 공개 문자열 getName () {return name; } public void setName (문자열 이름) {this.name = 이름; }Activity_Main :
<android.support.v7.widget.recyclerview xmlns : app = "http://schemas.android.com/apk/res-auto"xmlns : thool = "http://schemas.android.com/tools"Android : layout_width = "match _parent": 도구 : context = "com.tudou.recycleviewdemo.mainactivity"> <android.support.v7.widget.recyclerview android : id = "@+id/recyclerview"android : layout_width = "match_parent"android : layout_height = "match_parent"Andoid =# 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"> <버튼 안드로이드 : "@+id/recycle_name" "@+id/recycle_name"Android : layout_width = "wrap_content" " Android : layout_height = "wrap_content"Android : layout_centerinparent = "true"Android : text = "No.1"/> </elevingivelayout>
Kotlin : 구문이 약간 다르고 RecyclerView 호출이 비슷합니다.
MainActivity :
Class MainActivity : AppComPatactivity (), MainAdapter.ItemClick {val 항목 : mutableList = arrayList () var mainAdapter : mainAdapter? = null 재정의 재미 oncreate (SavedInstancestate : Bundle?) {super.oncreate (SavedInstancestate) setContentView (R.Layout.Actity.) RECYCLERITEM 항목 = recycleritem () item.name = "no."+0 item.add (item) val recyclerview = findViewById (r.id.recyclerView) as recyclerView recyclerView.layoutManager = gridlayoutManager = gridlayoutmanager = mainadapter (items) (mainadapter) MainAdapter !!. setItemClickListener (this) recyclerview.adapter = mainAdapter recyclerview.itemanimator = defaultitemanImator ()} // Adapter의 버튼 클릭 이벤트 이벤트 onitemClick (V : position : int) {val item = recycler = no. + (위치 + 1) items.add (0, item) // 데이터 mainAdapter 업데이트 !!. updatedata (items)} else {토스트 .maketext (this, items.get (position) .name, toast.length_short) .show ()}}}MainAdapter :
클래스 MainAdapter : recyclerview.adapter {var 항목 : 목록? = null var context : context? = null var itemclick : itemclick? = null 생성기 (항목 : 목록, 컨텍스트 : context) {this. this.context = context} fun setitemclicklistener (itemclick : itemclick) {this.itemclick = itemclick} fundatatedata (ited) {items = nontefated (items) 재미있는 OnbindViewholder (holder : viewholder?, 위치 : int) {var name = items !!. get (position) .name if (holder! = null) {holder.textname.settext (name) holder.textname.setonClickListener (if (itemclicklict) {if (initemclick) {null) {null! ItemClick !!. onitemClick (holder.ItemView, position)}}}}} 재미있는 재미있는 getItemCount () : int {return item !!. size} 재미있는 oncreateViewholder (부모 : 뷰 그룹?, viewtype : int) : viewholder {val v = LayoutInflater.from (부모 !!. context) .Inflate (r.layout.recycler_item, parent, false) val holder = viewholder (v) 반환 holder} 클래스 뷰 홀더 (itemview : view?) : recyclerview.viewholder (itemview) {textname = textname = textname = ItemView !!. findViewById (r.id.recycle_name) as TextView} 인터페이스 itemclick {fun onitemClick (v :보기, 위치 : int); }}Recycleritem :
클래스 Recycleritem {var name : string = ""get set}Activity_Main :
<android.support.constraint.constraintlayout xmlns : app = "http://schemas.android.com/apk/res-auto"xmlns : thool = "http://schemas.android.com/tools"android : layout_width = "match _parent"and layout_heout_height _height. 도구 : context = "com.tudo.kotlintdemo.mainactivity"> <android.support.v7.widget.recyclerview android : id = "@+id/recyclerview"android : layout_width = "match_parent"and layout_height = "mays_parent"안드로이드 =#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 : id = "@+id/recycle_name : layout_width = wrap_content" "wrap_content" Android : layout_height = "wrap_content"Android : layout_centerinparent = "true"Android : text = "No.1"/> </elevingivelayout>
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.