1.0 在各布局的基础上,修改ProvinceAdapter.java的代码:

package com.example.recyclerviewtest;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast; import java.util.List; public class ProvinceAdapter extends RecyclerView.Adapter<ProvinceAdapter.ViewHolder> {
private List<Province> mProvinceList;
private int resourceId; // 定义一个内部类ViewHolder,该类继承自RecyclerView.ViewHolder。
// 需要传入一个View参数,通常是RecyclerView子项最外层布局
static class ViewHolder extends RecyclerView.ViewHolder {
// ImageView provinceImage;
TextView provinceName;
View provinceView; public ViewHolder(View view) {
super(view);
provinceView = view;
provinceName = (TextView) view.findViewById(R.id.province_name);
}
} // 该构造函数作用是将数据源赋值给一个全局变量mProvinceList
public ProvinceAdapter(List<Province> provinceList) {
mProvinceList = provinceList;
} // 由于ProvinceAdapter是继承自RecyclerView.Adapter,
// 所以需要重写三个方法:
// onCreateViewHolder() :创建ViewHolder实例,将局部加载进来
// onBindViewHolder() :对RecyclerView子项数据进行赋值
// getItemCount() @Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.province_item,
viewGroup,
false);
final ViewHolder holder = new ViewHolder(view);
holder.provinceView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = holder.getAdapterPosition();
Province province = mProvinceList.get(position);
Toast.makeText(v.getContext(), "你点击了项" + province.getName(), Toast.LENGTH_SHORT).show();
}
}); return holder;
} @Override
public void onBindViewHolder(ViewHolder holder, int position
) {
Province province = mProvinceList.get(position);
holder.provinceName.setText(province.getName());
} @Override
public int getItemCount() {
return mProvinceList.size();
}
}

2.0 列表控件RecyclerView没有提供直接可以调用的注册监听事件,需要我们给子项具体的View去注册点击事件。优点是可以在某一个子项中,点击其中的某个图片、字段、按钮等,而不像setOnItemClickListener()方法那样只能选择子项本身。

最新文章

  1. Python-06-面向对象(基础篇)
  2. myString操作符重载
  3. OpenCascade HLR for Pipe Model
  4. [设计模式] javascript 之 迭代子模式
  5. 保利威视Polyv点播集成
  6. Java初学(一)
  7. OpenCV入门(二)
  8. Find Leaves of Binary Tree
  9. 跨域请求获取Solr json检索结果并高亮显示
  10. 使用C#发送正文带图片邮件
  11. SSRS中加入书签功能及数据集窗口
  12. hadoop各版本下载
  13. JavaScript基础学习(四)&mdash;Object
  14. Struts2中there is no action mapped for acion name (/XXXXX)
  15. HBuilder 安装使用教程
  16. MapReduce寻找共同好友
  17. ORALCE EBS ALERT 初体验
  18. C# 利用键值对取代Switch...Case语句
  19. WebDriver实现网页自动化测试(以python为例说明,ruby用法类似)
  20. 高通移植mipi LCD的过程LK代码

热门文章

  1. Maven 远程仓库下载慢的的解决方案
  2. 封装log4j支持记录到testng
  3. Android开发多媒体应用之SoundPool的使用的代码
  4. Win32创建异形窗口
  5. Java .Net Byte数组存储差异以及解决方法
  6. C++析构函数(转)
  7. OpenCV文本图像的旋转矫正
  8. lua热重载
  9. 打开usb调试的方法
  10. ORM框架SQLAlchemy的使用