适配器代码:
包含三个部分,一个是ViewHolder类,一个是实现父类的方法。另外一个是点击事件的一些方法和接口。其中一个setOnItemClickListener(OnItemClickListener),把传进来的已经实现的接口赋值给成员变量。ViewHolder实现了OnClickListener,每一个条目点击的时候就调用传过来的接口的onItemClick方法。
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
/*****************************************Adapter方法开始****************************************************/
private ArrayList<String> data;
public MyAdapter(ArrayList<String> data) {
this.data = data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.textView.setText(data.get(position));
}
@Override
public int getItemCount() {
return data.size();
}
/*****************************************Adapter方法结束****************************************************/
/*****************************************ViewHolder类开始****************************************************/
public class ViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
public TextView textView;
public ViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.textView);
textView.setOnClickListener(this);
}
// 通过接口回调来实现RecyclerView的点击事件
@Override
public void onClick(View v) {
if (itemClickListener != null) {
itemClickListener.onItemClick(v, getPosition());
}
}
}
/*****************************************ViewHolder类结束****************************************************/
/*****************************************item点击接口开始****************************************************/
public OnItemClickListener itemClickListener;
public void setOnItemClickListener(
OnItemClickListener itemClickListener) {
this.itemClickListener = itemClickListener;
}
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
/*****************************************item点击接口结束****************************************************/
}
下面是主Activity代码:
public class MainActivity extends AppCompatActivity {
private TextView tv;
private ViewOutlineProvider vp;
private RecyclerView rcv;
private ArrayList<String> data = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rcv = (RecyclerView) findViewById(R.id.rcv);
data.add("张三");
data.add("张三1");
data.add("张三2");
data.add("张三3");
data.add("张三4");
data.add("张三5");
data.add("张三6");
MyAdapter adapter= new MyAdapter(data);
LinearLayoutManager manager = new LinearLayoutManager(this);
rcv.setLayoutManager(manager);
rcv.setAdapter(adapter);
adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Toast.makeText(MainActivity.this, data.get(position), Toast.LENGTH_SHORT).show();
}![这里写图片描述](http://img.blog.csdn.net/20160830222652434)
});
}
}