您的位置:首页 > 移动开发 > Android开发

RecyclerView——添加点击事件

2016-12-12 21:49 323 查看
Android5.0谷歌退出了RecyclerView用与替代不好用的ListView,但是RecyclerView没有像listView一样的点击事件。所以需要自己添加。

下面直接粘下代码:

MainActivity.java

public class MainActivity extends AppCompatActivity {
private List<Bean> list = new ArrayList<>();
private RecyclerView ryList;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initDatas();
ryList = (RecyclerView) findViewById(R.id.ry_list);
LinearLayoutManager manager = new LinearLayoutManager(this);
ryList.setLayoutManager(manager);
MyAdapter adapter = new MyAdapter(list);
ryList.setAdapter(adapter);

}

/**
* 初始化数据
*/
public void initDatas() {
for (int i = 0; i < 10; i++) {
Bean bean = new Bean();
bean.setImg(R.mipmap.ic_launcher);
bean.setName("名字:" + i);
list.add(bean);
}
}
}


MyAdapter.java

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<Bean> list;

public MyAdapter(List<Bean> list) {
this.list = list;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list, parent,
false);
final ViewHolder holder = new ViewHolder(view);
holder.beanView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = holder.getAdapterPosition();

Toast.makeText(view.getContext(), "点击了第" + position + "个列表", Toast.LENGTH_SHORT)
.show();
}
});

holder.ivImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = holder.getAdapterPosition();

Toast.makeText(view.getContext(), "点击了第" + position + "张图片", Toast.LENGTH_SHORT)
.show();
}
});
return holder;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Bean bean = list.get(position);
holder.ivImg.setImageResource(bean.getImg());
holder.tvName.setText(bean.getName());
}

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

static class ViewHolder extends RecyclerView.ViewHolder {
View beanView;
ImageView ivImg;
TextView tvName;

public ViewHolder(View view) {
super(view);
beanView = view;
ivImg = (ImageView) view.findViewById(R.id.iv_img);
tvName = (TextView) view.findViewById(R.id.tv_name);
}
}
}


可以看到,代码中,我们在ViewHolder中获取了子项布局的view,然后在onCreateViewHolder()方法中,设置监听事件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android listview recycler