RecycleView布局中接口的使用

RecycleView布局中接口的使用,第1张

概述步骤:1.在adapter中新建一个接口,接口在adapter中有一个实例,并且提供set方法2.在createViewHolder的时候给itemview设置点击事件this(Adapter实现了View.OnClickListener接口).3.在onBindViewHolder的时候给itemview设置tag,目的是让itemview带着自己的位置,被复用后
步骤: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布局中接口的使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/999657.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存