给大家讲一下RecyclerView 的 点击事件的设置.在谷歌官方的RecyclerView中 是没有项点击事件的,不像ListView,如果你要想设置的话 需要自己去设置,我这里用的是接口回调的方式实现的. 我这里实现的是点击图片, 如果需要项点击事件的实现,则把 ImageView 换成你的整个布局 findViewbyId后 设置即可. 同理其他控件也是. 废话不多说了 先上代码:
先来Adapter的代码:
package com.example.administrator.recyclerview.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.administrator.recyclerview.R;
import java.util.List;
public class MyAdater extends RecyclerView.Adapter < MyAdater.ViewHolder > implements View.OnClickListener {
private Context mContext;
private List<String> mData;
private OnRecyclerViewItemClickListener mListener;
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onItemClick(v, (int) v.getTag() + 1);
}
}
public interface OnRecyclerViewItemClickListener {
void onItemClick(View view, int position);
}
public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
this.mListener = listener;
}
public MyAdater(Context mContext, List<String> mData) {
this.mContext = mContext;
this.mData = mData;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item_reclclerview, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mTextView.setText("你好美女");
holder.mImageView.setTag(position);
holder.mImageView.setOnClickListener(this);
}
@Override
public int getItemCount() {
return mData == null ? 0 : mData.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final ImageView mImageView;
private final TextView mTextView;
public ViewHolder(View itemView) {
super(itemView);
mImageView = (ImageView) itemView.findViewById(R.id.iv_item);
mTextView = (TextView) itemView.findViewById(R.id.tv_item);
}
}
}
接着上Activity的代码:
package com.example.administrator.recyclerview;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;
import com.example.administrator.recyclerview.adapter.MyAdater;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private MyAdater mAdater;
private List<String> mData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
setData();
}
private void setData() {
mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
mRecyclerView.setAdapter(mAdater);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
}
private void initData() {
mData = new ArrayList<>();
for (int i = 0; i < 30; i++) {
mData.add("我是第" + i + "项");
}
mAdater = new MyAdater(this, mData);
mAdater.setOnItemClickListener(new MyAdater.OnRecyclerViewItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Toast.makeText(MainActivity.this, "我是第" + position + "项", Toast.LENGTH_SHORT).show();
}
});
}
private void initView() {
mRecyclerView = (RecyclerView) findViewById(R.id.rl_recycler_main);
}
}
由此即可实现图片的点击事件