RecyclerView的点击事件

RecyclerView得点击事件,仅供参考

 

 

布局

 

<?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: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.wangjisen.rvdemo.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="RecyclerView点击事件" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rl_prize"
        android:layout_width="wrap_content"
        android:layout_height="76dp"
        android:layout_centerInParent="true">

    </android.support.v7.widget.RecyclerView>
</RelativeLayout>

 

 

 

代码

 

public class MainActivity extends AppCompatActivity {

    private RecyclerView recyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        intiData();

    }


    private void initView() {
        recyclerView = (RecyclerView) findViewById(R.id.rl_prize);
    }

    private void intiData() {
        LinearLayoutManager layout = new LinearLayoutManager(this);
        layout.setOrientation(LinearLayoutManager.HORIZONTAL);
        recyclerView.setLayoutManager(layout);
        List list = new ArrayList();
        list.add(R.mipmap.ic_launcher);
        list.add(R.mipmap.ic_launcher);
        list.add(R.mipmap.ic_launcher);
        list.add(R.mipmap.ic_launcher);
        list.add(R.mipmap.ic_launcher);
        list.add(R.mipmap.ic_launcher);
        list.add(R.mipmap.ic_launcher);
        list.add(R.mipmap.ic_launcher);
        list.add(R.mipmap.ic_launcher);
        list.add(R.mipmap.ic_launcher);
        list.add(R.mipmap.ic_launcher);
        RecyclerviewHorizontalJuryAdapter adapter =
                new RecyclerviewHorizontalJuryAdapter(this, list);
        RecyclerViewCallback recyclerViewCallback = new RecyclerViewCallback() {
            @Override
            public void onItemClick(View itemView, int position) {
                Toast.makeText(MainActivity.this,"点我:" + position,Toast.LENGTH_SHORT).show();
            }
        };
        adapter.setOnMyClickListener(recyclerViewCallback);
        recyclerView.setAdapter(adapter);

    }
}

 

 

 

adapter

 

public class RecyclerviewHorizontalJuryAdapter extends RecyclerView.Adapter<RecyclerviewHorizontalJuryAdapter.ViewHloder> {

    private List list;
    private Context context;
    private RecyclerViewCallback callback;

    /**
     * 注册接口
     */
    public void setOnMyClickListener(RecyclerViewCallback callback) {
        this.callback = callback;
    }

    public RecyclerviewHorizontalJuryAdapter(Context context, List list) {
        this.context = context;
        this.list = list;

    }

    @Override
    public ViewHloder onCreateViewHolder(ViewGroup parent, int viewType) {
        return new ViewHloder(LayoutInflater.from(context).inflate(R.layout.rv_item, parent, false));

    }

    @Override
    public void onBindViewHolder(final ViewHloder holder, final int position) {
        //通过itemview得到每个图片的pararms对象
        RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) holder.itemView.getLayoutParams();
        //设置修改参数
        holder.itemView.setLayoutParams(params);

        holder.ivAvatar.setBackgroundResource((Integer) list.get(position));

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                //当点击item时回调onItemClick函数,处理点击事件。
                callback.onItemClick(view, position);
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public class ViewHloder extends RecyclerView.ViewHolder {
        ImageView ivAvatar;

        public ViewHloder(View itemView) {
            super(itemView);
            ivAvatar = (ImageView) itemView.findViewById(R.id.iv_avatar);
        }

    }


}

 

 

 

 

回调

 

public interface RecyclerViewCallback {
    public void onItemClick(View itemView, int position);
}

 

 

 

 

 

 

 

RecyclerView中实现点击事件有两种方式: 1. 在onCreateViewHolder中注册点击事件: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mData; private OnItemClickListener mListener; public interface OnItemClickListener { void onItemClick(int position); } public void setOnItemClickListener(OnItemClickListener listener) { mListener = listener; } // ... @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); final ViewHolder viewHolder = new ViewHolder(view); viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mListener != null) { int position = viewHolder.getAdapterPosition(); mListener.onItemClick(position); } } }); return viewHolder; } // ... public static class ViewHolder extends RecyclerView.ViewHolder { // ... public ViewHolder(View itemView) { super(itemView); // ... } } } ``` 2. 定义点击动作: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mData; public interface OnItemClickListener { void onItemClick(int position); } // ... @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); final ViewHolder viewHolder = new ViewHolder(view); return viewHolder; } @Override public void onBindViewHolder(final ViewHolder holder, final int position) { // ... holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理点击事件 } }); } // ... public static class ViewHolder extends RecyclerView.ViewHolder { // ... public ViewHolder(View itemView) { super(itemView); // ... } } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大不懂

码字不易,一块也是爱,么么

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值