网站建设基础大纲文案,外贸公司网站推广,宿迁专业三合一网站开发,个人可以做的外贸网站0. 前言随着Android的发展#xff0c;虽然ListView依旧重要#xff0c;但RecyclerView确实越来越多的被大家使用。但显然并不能说RecyclerView就一定优于ListView#xff0c;而是应该根据不同的需求选择最合适的进行使用。本篇将介绍我们为什么要使用RecyclerView#xff… 0. 前言随着Android的发展虽然ListView依旧重要但RecyclerView确实越来越多的被大家使用。但显然并不能说RecyclerView就一定优于ListView而是应该根据不同的需求选择最合适的进行使用。本篇将介绍我们为什么要使用RecyclerView并且它的基本使用方法。在Android开发——RecyclerView特性以及基本使用方法一中主要介绍了我们为什么要使用RecyclerView以及RecyclerView强大的LayoutManager。这篇将主要介绍RecyclerView中的动画效果以及点击事件的处理。本文原创转载请注明出处为SEU_Calvin的博客。1. RecyclerView的动画效果和点击事件系统没有提供ClickListener和LongClickListener不过我们也可以自己去添加这里通过adapter中自己去提供回调的方式实现。在Adapter中如下所示 public OnItemClickListener itemClickListener;public void setOnItemClickListener(OnItemClickListener itemClickListener) {this.itemClickListener itemClickListener;}public interface OnItemClickListener {void onItemClick(View view, int position);void onItemLongClick(View view, int position);}public class ViewHolder extends RecyclerView.ViewHolder{public TextView textView;public ViewHolder(View itemView) {super(itemView);textView (TextView)itemView.findViewById(R.id.id_num);textView.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {if (itemClickListener ! null) {itemClickListener.onItemClick(view, getPosition());}}});textView.setOnLongClickListener(new View.OnLongClickListener() {Overridepublic boolean onLongClick(View view) {if (itemClickListener ! null) {itemClickListener.onItemLongClick(view, getPosition());}return true;}});}
}
首先自行提供了点击和长按的接口并在内部类ViewHolder中对点击事件进行了处理。在Activity中的实现如下mAdapter.setOnItemClickListener(new RecyclerAdapter.OnItemClickListener() {Overridepublic void onItemClick(final View view, int position) {Toast.makeText(MainActivity.this, position , Toast.LENGTH_SHORT).show();}Overridepublic void onItemLongClick(View view, int position) {mAdapter.removeData(position);}});
这里简单的单击事件只是Toast了位置信息而在长按事件中则调用了Adapter中的removeData()方法notifyItemRemoved()方法则对该条目进行了删除而且是有动画效果的。若有添加数据的需求也是有对应的方法即notifyItemInserted(position)。public void removeData(int position) {mData.remove(position);notifyItemRemoved(position);}public void addData(int position) {mData.add(position, Insert One);notifyItemInserted(position);}
当然需要为RecyclerView进行关于动画的设置mRcList.setItemAnimator(newDefaultItemAnimator());这里需要注意的是如在Android开发——RecyclerView特性以及基本使用方法一中显示的那样notifyDataSetChanged()是没有动画效果的。从效果图中可以看到RecyclerView可以正常的响应点击事件和长按删除事件而且添加和删除事件都是有动画效果的。源码下载地址点这里。 转载于:https://www.cnblogs.com/qitian1/p/6461452.html