RecylerView

1.和listView的不同,需要添加一个自己的布局管理器

        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        recylerView.setLayoutManager(layoutManager);

2.重写adapter类,并实现点击功能,这是重点:

//新建一个adapter,继承RecyclerView.Adapter,并并指定自定义的ViewHolder泛型
public class FruitAdapter2 extends RecyclerView.Adapter<FruitAdapter2.ViewHolder>{
        private Fruit[] data;
    //新建一个ViewHolder,继承RecyclerView.ViewHolder,viewHolder里放着每一item的布局
    static class ViewHolder extends RecyclerView.ViewHolder{
        View friutview;//每一item的布局
        TextView fruit_name;
        ImageView friut_image;//布局里的TextViewde的控件

        public ViewHolder(@NonNull View itemView) {
            super(itemView);//item的布局
            friutview = itemView;
            fruit_name = itemView.findViewById(R.id.fruit_name);
            friut_image = itemView.findViewById(R.id.fruit_image);//实例控件
        }
    }

    public FruitAdapter2(Fruit[] data) {
        this.data = data;//构造方法获得数据
    }

    //创建ViewHolder
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        //找到item得布局
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout2, null);
        final ViewHolder holder = new ViewHolder(view);
        
        //点击整个item的布局会调用此方法
        holder.friutview.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = holder.getAdapterPosition();//是adapter的position
                Log.e("sss", position+"" );
                Fruit item = data[position];

                Toast.makeText(v.getContext(), "click view "+item.getName(), Toast.LENGTH_SHORT).show();
            }
        });

        //对图片的点击事件
        holder.friut_image.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                int position = holder.getAdapterPosition();
                Log.e("sss", "文字---"+position );
                Fruit datum = data[position];
                Toast.makeText(v.getContext(), "click image"+datum.getName(), Toast.LENGTH_SHORT).show();
            }
        });
        //如果点击文字,就会实现触发friutview的事件处理
        return holder;
    }

    //对每一个item的数据进行赋值
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        Fruit datum = data[position];
        holder.friut_image.setImageResource(datum.getImageId());
        holder.fruit_name.setText(datum.getName());
    }

    @Override
    public int getItemCount() {
        return data.length;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值