给RecyclverView设置监听器是通过适配器来实现的,Google没有适用于RecyclverView的监听器,因此需要在自定义的适配器中通过自定义接口来自定义一个监听器
一.在自定义适配器的类中实现一个监听器接口
//定义一个点击接口
public interface HomeOnItemClickListener {
void onItemClick(View view ,int position);
}
二.在自定义适配器的类中把接口定义成全局变量并添加其set方法
//HomeOnItemClickListener接口设置为全局变量
private HomeOnItemClickListener homeOnItemClickListener ;
public void setOnItemClickListener(HomeOnItemClickListener listener) {
this.homeOnItemClickListener = listener;
}
三.在自定义适配器的类中的自定义ViewHolder类中实现OnClickListener方法
class OneViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
private TextView tv_title,tv_author,tv_date;
private ImageView imag_one;
public OneViewHolder(View itemView) {
super(itemView);
tv_title= (TextView) itemView.findViewById(R.id.tv_title_one);
tv_author= (TextView) itemView.findViewById(R.id.tv_author_one);
tv_date= (TextView) itemView.findViewById(R.id.tv_date_one);
imag_one= (ImageView) itemView.findViewById(R.id.iv_one);
itemView.setOnClickListener(this);
}
public void setDate(TopBean.ResultBean.DataBean dataBean){
tv_title.setText(dataBean.getTitle());
tv_author.setText(dataBean.getAuthor_name());
tv_date.setText(dataBean.getDate());
//加载资源到控件上
Glide.with(context).load(dataBean.getThumbnail_pic_s()).into(imag_one);
}
//设置视图的点击事件
@Override
public void onClick(View v) {
if(homeOnItemClickListener!=null){
homeOnItemClickListener.onItemClick(v,getAdapterPosition());
}
}
}
四.在其他类中实现给RecyclverView添加监听器
//使用alibaba的fastjson进行数据解析
listData = JSON.parseObject(response, TopBean.class).getResult().getData();
linearLayoutManager=new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(linearLayoutManager);
adapter=new HomeAdapter(getContext(),listData);
recyclerView.setAdapter(adapter);
adapter.setOnItemClickListener(new HomeAdapter.HomeOnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
//Toast只能吐司字符串,如果不是字符串则出现资源未找到错误
//Toast.makeText(getContext(),position+"",Toast.LENGTH_LONG).show();
Intent intent=new Intent();
intent.setClass(getContext(), DetailActivity.class);
intent.putExtra("url",listData.get(position).getUrl());
intent.putExtra("title",listData.get(position).getTitle());
intent.putExtra("image",listData.get(position).getThumbnail_pic_s());
startActivity(intent);
//设置两种动画,分别是淡入淡出和滑动
getActivity().overridePendingTransition(android.R.anim.fade_in,
android.R.anim.fade_out);
getActivity().overridePendingTransition(android.R.anim.slide_in_left,
android.R.anim.slide_out_right);
}
});
别忘了在清单文件中添加网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>