//定义适配器类
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{
private Context context;
private List<People> DataList;

//编写导入数据的通用构造方法
MyAdapter(Context context, List<People> DataList){
this.context=context;
this.DataList=new ArrayList<>(DataList);
}
/*
以下三个方法和一个类是必须要重写的方法
*/
//ViewHolder(子项视图保存类):将当前Item视图都实例化保存起来,避免反复调用findViewById方法,浪费资源
//此处不能使用Butterknife
class MyViewHolder extends RecyclerView.ViewHolder{
TextView itemText;
ImageView itemImage;
public MyViewHolder(View itemView) {
super( itemView );
itemText=itemView.findViewById( R.id.itemText );
itemImage=itemView.findViewById( R.id.itemImage );

}
}
//创建ViewHolder实例并返回,加载item 的布局
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.itemlayout,parent,false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
//对RecyclerView子项数据进行赋值,将子项数据与ViewHolder里的控件进行绑定(设置)
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.itemText.setText( DataList.get( position ).getData() );
holder.itemImage.setImageResource( DataList.get( position ).getImageId() );
//把图片进行按比例缩放
holder.itemImage.setScaleType( ImageView.ScaleType.FIT_CENTER );

//自定义点击事件(直接在Adapter类重写点击事件)
/*holder.itemView.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText( context, ""+position,Toast.LENGTH_SHORT).show();
}
} );*/

//自定义点击事件(点击后触发的是:holder.itemView.setOnClickListener方法,
//然后调用自定义监听时间接口的onItemClick(position)方法,具体执行代码由外部实现)
if (myItemClickListener != null) {
holder.itemView.setOnClickListener( new View.OnClickListener() {

@Override
public void onClick(View v) {
myItemClickListener.onItemClick(position );
}
} );
}
}
//返回子项(Item)个数
@Override
public int getItemCount() {
return DataList.size();
}

//自定义监听事件接口ItemClickListener ,和在Adapter类里的引用myItemClickListener
private ItemClickListener myItemClickListener;
public interface ItemClickListener{
void onItemClick( int position);//点击监听事件,在外部实现
}
//让外部能够使用setItemClickListener给ItemClickListener内部引用赋值
public void setItemClickListener(ItemClickListener myItemClickListener) {
this.myItemClickListener = myItemClickListener;
}
//让外部能添加和删除Item的方法
public void addItem(int position,People people){
DataList.add( position,people );
//增添动作刷新适配器
notifyItemInserted( position );

}
public void removeItem(int position){
DataList.remove( position );
//删除动作刷新适配器
notifyItemRemoved( position );
}
}

DataList是外部传入的子项数据列表的更多相关文章

  1. 【WPF】闲着没事,写了个支持数据列表分页的帮助类

    支持分页的MVVM组件大家可以网上找,老周这个类只是没事写来娱乐一下的,主要是功能简单,轻量级,至少它满足了我的需求,也许还有未知的 bug . 这个类支持对数据列表进行分页处理,原理是利用 Skip ...

  2. .NET各大平台数据列表控件绑定原理及比较(WebForm、Winform、WPF)

    说说WebForm: 数据列表控件: WebForm 下的列表绑定控件基本就是GridView.DataList.Repeater:当然还有其它DropDownList.ListBox等. 它们的共同 ...

  3. CS窗体程序数据列表分页

    以前,觉得winform程序分页很无趣,也没实际意义,直到近期的项目实践中让我认识到原来winform数据列表分页也是非常有必要的,因为由于数据量过大的情况,当窗体在初始加载数据的时候如果不做条件的限 ...

  4. js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符

    js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...

  5. 从后端到前端之Vue(四)小试牛刀——真实项目的应用(树、tab、数据列表和分页)

    学以致用嘛,学了这么多,在真实项目里面怎么应用呢?带着问题去学习才是最快的学习方式.还是以前的那个项目,前后端分离,现在把前端换成vue的,暂时采用脚本化的方式,然后在尝试工程化的方式. 现在先实现功 ...

  6. UWP开发必备:常用数据列表控件汇总比较

    今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...

  7. c# gridview数据列表中NamingContainer容器的用法

    当在前台我们绑定了一个linkbutton型的按钮,并触发了onserverclick="delBook_Server"的服务端事件,前台代码如下: <asp:Templat ...

  8. knockoutjs中使用mapping插件绑定数据列表

    使用KO绑定数据列表示例:   1.先申请V,T,T2三个辅助方法,方便调试.声明viewModel和加载数据时的映射条件mapping    2.先使用ko.mapping.fromJS()将原来的 ...

  9. js动态生成数据列表

    我们通常会使用table标签来展示数据内容,由于需要展示的数据内容是随时更换的,所以不可能将展示的数据列表写死在html写死在页面中,而是需要我们根据后台传来的数据随时更换,这个时候就需要我们使用js ...

随机推荐

  1. reload() 方法用于重新加载当前文档。配合Ajax异步请求。

    1. reload() 方法, reload() 方法用于重新加载当前文档.配合Ajax异步请求. http://www.w3school.com.cn/jsref/met_loc_reload.as ...

  2. 让图片img标签上下左右居中

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. python,pycharm环境安装

    1.1 python3安装四部曲 第一步下载 地址 https://www.python.org/downloads/windows/ 第二步安装 1. 第三步 配置坏境变量 第四步 测试是否完成安装 ...

  4. 一分钟理解sku和spu

    SPU SPU = Standard Product Unit (标准化产品单位) SPU是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该集合描述了一个产品的特性.通俗点讲,属性值 ...

  5. flutter-常见的基础组件(一)

    flutter 1.Text 文本组件 Text( 'czklove', //文本上的文字 style: TextStyle( // style 代表对文字的描述 fontSize: 18, //文字 ...

  6. 配置ShiroFilter需要注意的问题(Shiro_DelegatingFilterProxy)

    ShiroFilter的工作原理 ShiroFilter:DelegatingFilterProxy作用是自动到Spring 容器查找名字为shiroFilter(filter-name)的bean并 ...

  7. 将.py文件转换成.exe文件

    1.安装pyinstaller模块 pip install pyinstaller 2.打开python目录下的scripts文件夹 cmd下,使用pyinstaller -F test.py,运行后 ...

  8. Service_Worker XSS

    0x00 简介 Service Worker 是 Chrome 团队提出和力推的一个 WEB API,用于给 web 应用提供高级的可持续的后台处理能力.该 WEB API 标准起草于 2013 年, ...

  9. TensorFlow for python学习使用

    一.TensorFlow简介 TensorFlow 是由 Google Brain 团队为深度神经网络(DNN)开发的功能强大的开源软件库.当前流行的深度学习框架,从中能够清楚地看到 TensorFl ...

  10. [易学易懂系列|rustlang语言|零基础|快速入门|(12)|Enums枚举]

    [易学易懂系列|rustlang语言|零基础|快速入门|(12)] 有意思的基础知识 Enums 今天我们来讲讲枚举. 在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者 ...