【移动应用开发技术】Android中如何解决RecyclerView各种点击事件_第1页
【移动应用开发技术】Android中如何解决RecyclerView各种点击事件_第2页
【移动应用开发技术】Android中如何解决RecyclerView各种点击事件_第3页
【移动应用开发技术】Android中如何解决RecyclerView各种点击事件_第4页
【移动应用开发技术】Android中如何解决RecyclerView各种点击事件_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】Android中如何解决RecyclerView各种点击事件

BaseRecylerAdapter类public

abstract

class

BaseRecyclerAdapter

extends

RecyclerView.Adapter<BaseViewHolder>

implements

View.OnClickListener

,View.OnLongClickListener

{

private

OnRecyclerViewItemClickListener

onRecyclerViewItemClickListener;

private

OnRecyclerViewItemLongClickListener

onRecyclerViewItemLongClickListener;

private

OnSubViewClickListener

onSubViewClickListener;

@Override

public

void

onBindViewHolder(BaseViewHolder

holder,

int

position)

{

holder.itemView.setTag(position);

holder.onBind(position);

if

(onRecyclerViewItemClickListener

!=

null)

{

holder.itemView.setOnClickListener(this);

}

if

(onRecyclerViewItemLongClickListener

!=

null)

{

holder.itemView.setOnClickListener(this);

}

if

(onSubViewClickListener

!=

null)

{

holder.setSubViewClickListener(onSubViewClickListener,position);

}

}

public

void

setOnRecyclerViewItemClickListener(OnRecyclerViewItemClickListener

onRecyclerViewItemClickListener)

{

this.onRecyclerViewItemClickListener

=

onRecyclerViewItemClickListener;

}

public

void

setOnRecyclerViewItemLongClickListener(OnRecyclerViewItemLongClickListener

onRecyclerViewItemLongClickListener)

{

this.onRecyclerViewItemLongClickListener

=

onRecyclerViewItemLongClickListener;

}

public

void

setOnSubViewClickListener(OnSubViewClickListener

listener){

this.onSubViewClickListener

=

listener;

}

@Override

public

void

onClick(View

v)

{

if

(v.getTag()

!=

null)

{

int

position

=

(int)

v.getTag();

onRecyclerViewItemClickListener.onItemClick(position);

}

}

@Override

public

boolean

onLongClick(View

v)

{

if

(v.getTag()

!=

null){

int

position

=

(int)v.getTag();

onRecyclerViewItemLongClickListener.onItemLongClick(position);

}

return

true;

}

public

interface

OnRecyclerViewItemClickListener

{

void

onItemClick(int

position);

}

public

interface

OnSubViewClickListener{

void

onSubViewClick(View

v,

int

position);

}

public

interface

OnRecyclerViewItemLongClickListener

{

void

onItemLongClick(int

position);

}

}public

interface

OnRecyclerViewItemClickListener

{

void

onItemClick(int

position);

}

public

interface

OnSubViewClickListener{

void

onSubViewClick(View

v,

int

position);

}

public

interface

OnRecyclerViewItemLongClickListener

{

void

onItemLongClick(int

position);

}@Override

public

void

onBindViewHolder(BaseViewHolder

holder,

int

position)

{

holder.itemView.setTag(position);

holder.onBind(position);

if

(onRecyclerViewItemClickListener

!=

null)

{

holder.itemView.setOnClickListener(this);

}

if

(onRecyclerViewItemLongClickListener

!=

null)

{

holder.itemView.setOnClickListener(this);

}

if

(onSubViewClickListener

!=

null)

{

holder.setSubViewClickListener(onSubViewClickListener,position);

}

}

@Override

public

void

onClick(View

v)

{

if

(v.getTag()

!=

null)

{

int

position

=

(int)

v.getTag();

onRecyclerViewItemClickListener.onItemClick(position);

}

}

@Override

public

boolean

onLongClick(View

v)

{

if

(v.getTag()

!=

null){

int

position

=

(int)v.getTag();

onRecyclerViewItemLongClickListener.onItemLongClick(position);

}

return

true;

}BaseViewHolder类public

abstract

class

BaseViewHolder

extends

RecyclerView.ViewHolder

implements

View.OnClickListener{

private

BaseRecyclerAdapter.OnSubViewClickListener

onSubViewClickListener;

public

BaseViewHolder(View

itemView)

{

super(itemView);

findViewById(itemView);

}

/**

*

传入子项点击事件所需参数

*

@param

listener

自定义的接口

*

@param

tagPosition

tag

*/

public

void

setSubViewClickListener(BaseRecyclerAdapter.OnSubViewClickListener

listener,

int

tagPosition){

this.onSubViewClickListener

=

listener;

initSubViewClick(tagPosition);

}

/**

*

通过id匹配控件(开发者自行实现)

*

@param

itemView

父布局

*/

abstract

protected

void

findViewById(View

itemView);

/**

*

用于装载数据(开发者自行实现)

*

@param

position

当前位置

*/

abstract

protected

void

onBind(int

position);

/**

*

初始化子项的点击事件(为子项设置tag)

*

@param

tagPosition

tag

*/

protected

void

initSubViewClick(int

tagPosition){

}

/**

*

实现子项点击事件的转发

*

@param

v

*/

@Override

public

void

onClick(View

v)

{

if

(v.getTag()

!=

null)

{

int

position

=

(int)

v.getTag();

onSubViewClickListener.onSubViewClick(v,position);

}

}

}/**

*

通过id匹配控件(开发者自行实现)

*

@param

itemView

父布局

*/

abstract

protected

void

findViewById(View

itemView);

/**

*

用于装载数据(开发者自行实现)

*

@param

position

当前位置

*/

abstract

protected

void

onBind(int

position);public

class

RecyclerAdapterMyActivity

extends

BaseRecyclerAdapter{

private

List<MyActivityBean>

list;

public

RecyclerAdapterMyActivity(List<MyActivityBean>list){

this.list

=

list;

}

@Override

public

BaseViewHolder

onCreateViewHolder(ViewGroup

parent,

int

viewType)

{

View

view

=

LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycler_myactivity_activity,parent,false);

ViewHolder

holder

=

new

ViewHolder(view);

return

holder;

}

@Override

public

int

getItemCount()

{

return

list.size();

}

public

class

ViewHolder

extends

BaseViewHolder

{

private

TextView

tv_name,tv_title,tv_content;

private

Button

activityBtnChat;

private

Button

activityBtnCancel;

ViewHolder(View

itemView)

{

super(itemView);

}

@Override

protected

void

findViewById(View

itemView)

{

tv_name

=

itemView.findViewById(R.id.tv_my_activity_name);

tv_title

=

itemView.findViewById(R.id.tv_my_activity_title);

tv_content

=

itemView.findViewById(R.id.tv_my_activity_content);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论