步骤:1.在adapter中新建一个接口,接口在adapter中有一个实例,并且提供set方法 2.在createVIEwHolder的时候给itemvIEw设置点击事件this(Adapter实现了VIEw.OnClickListener 接口). 3.在onBindVIEwHolder的时候给itemvIEw设置tag,目的是让itemvIEw带着自己的位置,被复用后会设置新的。 4.重写Adapter的OnClickListener方法。 if (ItemclickListener != null) { ItemclickListener.onitemclick(Integer.parseInt(vIEw.getTag().toString())); } 5.在Activity中去使用。给adapter.setItemclickListener(匿名内部类的方式)。 也可以Activity实现OnItemClick接口,重写onitemclick方法。
@H_419_3@RecycleVIEwAdapter.java
@H_419_3@package com.example.adapter;import androID.content.Context;import androID.support.v7.Widget.RecyclerVIEw;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.ImageVIEw;import androID.Widget.TextVIEw;import com.example.entity.CarCompany;import com.example.jump.R;import java.util.List;/** * Created by administrator on 2017/2/20. */public class RecycleVIEwAdapter extends RecyclerVIEw.Adapter<RecycleVIEwAdapter.MyHolder> implements VIEw.OnClickListener{ private Context mContext; private List<CarCompany> List; private LayoutInflater inflater; private OnItemClick ItemclickListener=null;//给一个实例并且提供下边set方法 public voID setItemClickListener(OnItemClick itemclickListener){ ItemclickListener=itemclickListener; } //有参的构造函数,并实例化布局加载器 public RecycleVIEwAdapter(Context mContext, List<CarCompany> List) { this.mContext = mContext; this.List = List; inflater=LayoutInflater.from(mContext); } @OverrIDe public MyHolder onCreateVIEwHolder(VIEwGroup parent, int vIEwType) { //第二个参数是容器 第三个参数:true使用父布局的布局参数,false使用自己的布局参数 VIEw vIEw=inflater.inflate(R.layout.activity_item_List,parent,false); MyHolder holder=new MyHolder(vIEw); holder.itemVIEw.setonClickListener(this); return new MyHolder(vIEw); } @OverrIDe public voID onBindVIEwHolder(MyHolder holder, int position) { //获取对应位置的数据, 不能再此重新实例化CarCompany CarCompany company=List.get(position); holder.tv_name.setText(company.getCompany()); holder.iv_img.setimageResource(company.getimg()); holder.itemVIEw.setTag(position); } @OverrIDe public int getItemCount() { return List.size(); } /** * * @param v */ @OverrIDe public voID onClick(VIEw v) { if(ItemclickListener!=null){ ItemclickListener.onitemclick(Integer.parseInt(v.getTag().toString())); } } //创建内部类继承于RecycleVIEw.VIEwHolder实例化自定义布局中的属性 class MyHolder extends RecyclerVIEw.VIEwHolder{//内部类要写在主函数里边 private ImageVIEw iv_img; private TextVIEw tv_name; public MyHolder(VIEw itemVIEw) { super(itemVIEw); iv_img= (ImageVIEw) itemVIEw.findVIEwByID(R.ID.iv_img); tv_name= (TextVIEw) itemVIEw.findVIEwByID(R.ID.name); } } //有方法 我们需要知道点击的是第几个item.// 自定义接口,同时传入position参数设置item布局点击的是哪一个item public interface OnItemClick{ voID onitemclick(int position); }}
@H_419_3@RecycleVIEwAcvitity.java
@H_419_3@package com.example.jump;import androID.support.v7.app.AppCompatActivity;import androID.os.Bundle;import androID.support.v7.Widget.linearlayoutmanager;import androID.support.v7.Widget.RecyclerVIEw;import com.example.adapter.RecycleVIEwAdapter;import com.example.entity.CarCompany;import java.util.ArrayList;import java.util.List;public class RecycleVIEwActivity extends AppCompatActivity { private RecyclerVIEw rv; private String[] names = new String[]{"长安", "沃尔沃", "大众", "宾利", "奔驰"}; private int[] IDs = new int[]{R.drawable.changan, R.drawable.vol, R.drawable.das, R.drawable.bl, R.drawable.benz}; private List<CarCompany> List; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_recycle_vIEw); rv= (RecyclerVIEw) findVIEwByID(R.ID.rv_vIEw);//一定要实例化对应layout中设置的RecycleVIEw intiRV(); } private voID intiRV(){ List=new ArrayList<>(); for (int i = 0; i <names.length ; i++) { CarCompany company=new CarCompany(); company.setCompany(names[i]); company.setimg(IDs[i]); List.add(company); } RecycleVIEwAdapter adapter=new RecycleVIEwAdapter(this,List); //设置布局管理器 rv.setLayoutManager(new linearlayoutmanager(this));//像ListVIEw一样展示 rv.setAdapter(adapter); }}
@H_419_3@recyclevIEw.xml
@H_419_3@<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:ID="@+ID/activity_recycle_vIEw" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:paddingBottom="@dimen/activity_vertical_margin" androID:paddingleft="@dimen/activity_horizontal_margin" androID:paddingRight="@dimen/activity_horizontal_margin" androID:paddingtop="@dimen/activity_vertical_margin" tools:context="com.example.jump.RecycleVIEwActivity"> <androID.support.v7.Widget.RecyclerVIEw androID:ID="@+ID/rv_vIEw" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content"> </androID.support.v7.Widget.RecyclerVIEw></relativeLayout>
@H_419_3@ 总结以上是内存溢出为你收集整理的RecycleView布局中接口的使用全部内容,希望文章能够帮你解决RecycleView布局中接口的使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
概述步骤:1.在adapter中新建一个接口,接口在adapter中有一个实例,并且提供set方法2.在createViewHolder的时候给itemview设置点击事件this(Adapter实现了View.OnClickListener接口).3.在onBindViewHolder的时候给itemview设置tag,目的是让itemview带着自己的位置,被复用后
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
自定义Adapter与系统自带的adapter区别(样例步骤).txt
上一篇
2022-05-21
Airtest IDE 自动化测试2 - AirtestIDE 安装与启动 Android模拟器
下一篇
2022-05-21
评论列表(0条)