当前位置:  首页  >  PHP资讯  >  业界资讯

详解分别用Kotlin和java写RecyclerView的示例

0

本文介绍了分别用Kotlin和java写RecyclerView的示例,分享给大家,具体如下:

java:跟一般的写法一样,增加了按钮响应

MainActivity:

 public class MainActivity extends AppCompatActivity implements RecyclerAdapter.OnItemClickListener{ private RecyclerView mRecyclerView; private RecyclerView.LayoutManager mLayoutManager; private RecyclerAdapter mRecyclerAdapter; private ArrayListlist; @Override protected void onCreate(Bundlesaved InstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerItem item; list = new ArrayList<>(); item = new RecyclerItem(); item.setName("No."+0); list.add(item); mRecyclerView = findViewById(R.id.recyclerView); mRecyclerAdapter = new RecyclerAdapter(this,list); mRecyclerAdapter.setOnItemClickListener(this); // 竖直方向的网格样式,每行一个Item mLayoutManager=new GridLayoutManager(this,3,OrientationHelper.VERTICAL,false); // 设置布局管理器 mRecyclerView.setLayoutManager(mLayoutManager); // 设置adapter mRecyclerView.setAdapter(mRecyclerAdapter); // 设置Item添加和移除的动画 mRecyclerView.setItemAnimator(newDefaultItemAnimator()); } //adapter的按钮点击事件 @Override public void onItemContentClick(Viewview,intposition) { //点击最后一个按钮增加一个item if(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(); } } } 

Adapter:

 public class RecyclerAdapter extends RecyclerView.Adapter{ private ArrayList mData; private Context mContext; private OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener listener) { this.OnItemClickListener= listener; } public RecyclerAdapter(Context mContext,ArrayList mData){ this.mData = mData; this.mCOntext= mContext; } //刷新整个list public void updateData(ArrayList data) { this.mData = data; notifyDataSetChanged(); } //刷新局部list 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()).inflate(R.layout.recycler_item, parent, false); ViewHolder viewHolder = new ViewHolder(v); return viewHolder; } @Override public void onBindViewHolder(final ViewHolder holder, 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(holder.itemView, pos); } } }); } @Override public int getItemCount() { return mData == null &#63; 0 : mData.size(); } public static class ViewHolder extends RecyclerView.ViewHolder{ Button btn; public ViewHolder(View itemView) { super(itemView); btn = itemView.findViewById(R.id.recycle_name); } } public interface OnItemClickListener{ void onItemContentClick(View view, int position); } } 

RecyclerItem:

 public class RecyclerItem{ String name; public String getName() { return name; } public void setName(String name) { this.name = name; }

activity_main:

     

recycler_item:

  

Kotlin:语法略有不同,recyclerview调用类似

MainActivity:

 class MainActivity : AppCompatActivity(), MainAdapter.ItemClick{ val items : MutableList = ArrayList() var mainAdapter : MainAdapter &#63;= null override fun onCreate(savedInstanceState:Bundle&#63;) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //添加一个item var item : 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, false) mainAdapter=MainAdapter(items, this) mainAdapter!!.setItemClickListener(this) recyclerView.adapter = mainAdapter recyclerView.itemAnimator = DefaultItemAnimator() } //adapter的按钮点击事件 override fun OnItemClick(v : View, position : Int) { if(position == items.size - 1) { val item = RecyclerItem() item.name = "No." + (position + 1) items.add(0, item) //更新数据 mainAdapter!!.updateData(items) }else{ Toast.makeText(this,items.get(position).name, Toast.LENGTH_SHORT).show() } } } 

MainAdapter:

 class MainAdapter : RecyclerView.Adapter{ var items : List&#63; = null var context : Context &#63;= null var itemClick : ItemClick &#63;= 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 notifyDataSetChanged() } override fun onBindViewHolder(holder : ViewHolder&#63;, position : Int) { var name=items!!.get(position).name if(holder != null) { holder.textName.setText(name) holder.textName.setOnClickListener(View.OnClickListener{ if(itemClick != null) { itemClick!!.OnItemClick(holder.itemView, position) } }) } } override fun getItemCount():Int{ return items!!.size } override fun onCreateViewHolder(parent : ViewGroup&#63;, viewType : Int) : ViewHolder{ val v = LayoutInflater.from(parent!!.context).inflate(R.layout.recycler_item, parent, false) as RelativeLayout val holder = ViewHolder(v) return holder } class ViewHolder(itemView : View&#63;) : RecyclerView.ViewHolder(itemView) { var textName : TextView = itemView!!.findViewById(R.id.recycle_name) as TextView } interface ItemClick{ fun OnItemClick(v : View, position : Int); } } 

RecyclerItem:

 class RecyclerItem{ var name : String = "" get set } 

activity_main:

    

recycler_item:

  xmlns:android="http://schemas.android.com/apk/res/android" android:layout_ android:layout_> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

内容推荐:免费高清PNG素材下载
吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有 京ICP备19059560号-4