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的点击事件