预先导入数据模式:


/**
* Created by lenovo on 2018/5/18.
*/ public class DeivceListData {
private DeivceListData(){ }
//创建点击接口
public interface ClickEvent{
public abstract void onClick(Context c);
} //创建数据单例的内部类
public class Item{
//添加需要的属性
private int image;
private String name;
private ClickEvent click; public ClickEvent setClick(){
if(this.click != null){
return this.click;
}
return null;
}
public int getImage(){
return this.image;
}
public String getName(){
return this.name;
} public Item (int image,String name,ClickEvent click){
this.image = image;
this.name = name;
this.click = click; } }
//创建list
private List<Item> list = new ArrayList<Item>();
//添加数据,并且返回集合
public List<Item> initdata(){
list.clear();
list.add(new Item(R.mipmap.default_avatar, "儿子", new ClickEvent() {
@Override
public void onClick(Context c) {
Toast.makeText(c,"你点击了儿子",Toast.LENGTH_SHORT).show(); }
}));
list.add(new Item(R.mipmap.default_avatar, "女儿", new ClickEvent() {
@Override
public void onClick(Context c) {
Toast.makeText(c,"你点击了女儿",Toast.LENGTH_SHORT).show(); }
})); return this.list;
}
//实现class的单例模式
private static DeivceListData deivceListData ;
public static DeivceListData I (){
if(deivceListData == null){
deivceListData = new DeivceListData();
}
return deivceListData;
}
}

2.将数据导入适配器

       DeivceListAdapter deivceListAdapter = new DeivceListAdapter(DeivceListData.I().initdata(),this);
recyclerView.setAdapter(deivceListAdapter);

3.在适配器里实现的点击事件,回调:

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.device_list_row_layout,parent,false);
final ViewHolder holder = new ViewHolder(view); /*
添加选中的打勾显示
*/
holder.mListLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//将点击的位置传出去
mposition = holder.getAdapterPosition();
//将点击回调出去
mList.get(mposition).setClick().onClick(mContext); }
});
return holder;
}

另一种形式,这种形式可以只需要一个position值(positon值可以从ListView的适配器里的点击事件用接口传出)就可以在任意的activity去操作remove或者clear在或者add,也可以直接修改某个item的值,但是需要注意clear否则在某些activity的listView里可能重复导入数据。


/**
content:每个设备的数据处理class
time:2018-07-17 14:35:49
*/ public class ChildListData {
private static ChildListData mChidListData;
private List<Item> mList = new ArrayList<>();
private ChildListData(){ }
public static ChildListData getI(){
if(mChidListData == null){
mChidListData = new ChildListData();
}
return mChidListData;
} /**
* 添加一个item到mList中
* @param item ChildList的item
*/
public void addItem(Item item){
if(item !=null){
mList.add(item);
} } public List<Item> getList() {
return mList;
} class Item{
public String name;
public String filePath;
public LatLng latLng;
public String time;
public String battery;
public int positioningMode;
public int mode; /**
*
* @param name 名称
* @param imageFile 头像文件路径
* @param latLng 坐标
* @param time 时间
* @param battery 电量
* @param positioningMode 定位模式
* @param mode 实时模式
*/
public Item(String name, String imageFile, LatLng latLng, String time, String battery, int positioningMode, int mode) {
this.name = name;
this.filePath = imageFile;
this.latLng = latLng;
this.time = time;
this.battery = battery;
this.positioningMode = positioningMode;
this.mode = mode;
} } }

android 开发 更好的数据存放,回调,处理class模式,适合与各种布局适配器class一起使用的更多相关文章

  1. Android开发:SharedPreferences 存储数据、获取数据

    Android开发:SharedPreferences 存储数据.获取数据 email:chentravelling@163.com 开发环境:win7 64位,Android Studio. 关于S ...

  2. Android开发学习之SQLite数据存取浅析

    一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低 ...

  3. 让你Android开发更简单

    转载:http://www.jianshu.com/p/22ff8b5fdadc 搭建一个新的Android项目,你会怎么做? 每个人对应用框架的理解不相同,但是最终达到的效果应该是一样: ①降低项目 ...

  4. 这些小工具让你的Android 开发更高效

    在做Android 开发过程中,会遇到一些小的问题.尽管自己动手也能解决.可是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效. Vy ...

  5. Android开发之自定义组件和接口回调

    说到自定义控件不得不提的就是接口回调,在Android开发中接口回调用的还是蛮多的.在这篇博客开始的时候呢,我想聊一下iOS的自定义控件.在iOS中自定义控件的思路是继承自UIView, 在UIVie ...

  6. Android开发学习之路--数据持久化之初体验

    上班第一天,虽然工作上处于酱油模式,但是学习上依旧不能拉下,接着学习android开发吧,这里学习数据持久化的 知识. 其实数据持久化就是数据可以保存起来,一般我们保存数据都是以文件,或者数据库的形式 ...

  7. Android开发中多进程共享数据

    # 背景 最近在工作中遇到一个需求,需要在接收到推送的时候将推送获得的数据存起来,以供app启动时使用.我们会认为这不是So easy吗?只要把数据存到SharedPreferences中,然后让ap ...

  8. Android开发学习---如何写数据到外部存储设备(sd卡),Environment.getExternalStorageDirectory,怎么获取sd卡的大小?

    本文主要介绍如何写数据到sd卡,这里主要到的技术是Environment中的方法. 1. 2.实现代码: /datasave/src/com/amos/datasave/savePasswordSer ...

  9. android开发中获取<meta-data>数据

    在 AndroidManifest.xml 中,<meta-data>元素是一个键值对,往往被包含在<application> .<activity>.<se ...

随机推荐

  1. nginx搭建以及其配置文件

    nginx搭建: 参考link:https://blog.csdn.net/wxyjuly/article/details/79443432 nginx配置文件详解: 参考link:https://w ...

  2. 浏览器输入URL按回车后都经历了什么?

    在浏览器上输入一个URL,按回车后,这个过程发生了什么? 1.首先,浏览器地址栏输入了URL,先解析URL,检测URL地址是否合法 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直 ...

  3. 微信小程序des加密、PHP des解密

    最近在做对小程序传输数据进行加密,加密方法有很多,使用的是des对称加密 采用的是CBC模式, 引用的插件为tripledes.js,https://github.com/Favour1111in/h ...

  4. 剑指Offer 55. 链表中环的入口结点 (链表)

    题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. 题目地址 https://www.nowcoder.com/practice/253d2c59ec3e4bc68d ...

  5. U-Boot shell脚本语法

    /********************************************************************** * U-Boot shell脚本语法 * 说明: * 之 ...

  6. WEBBASE篇: 第五篇, CSS知识3

    CSS知识3 框模型: 一,外边距(上文) 二, 内边距    1,什么是内边距? 内边距就是内容与元素边缘之间的距离: 注: 内边距会扩大元素边框内所占的区域的 语法: padding: 四个方向的 ...

  7. JAVA常用设计模式(一、单例模式、工厂模式)

    JAVA设计模式之单例模式 import java.util.HashMap; import java.util.Map; /** * 设计模式之单例模式 * 单例模式(Singleton Patte ...

  8. python2.7安装beautifulsoup包

    python2.7安装beautifulsoup包 准备条件: 1.已经安装好python2.7 2.下载beautifulsoup包,选择合适的包,网址:https://www.crummy.com ...

  9. 《从Lucene到Elasticsearch:全文检索实战》学习笔记四

    今天我给大家讲讲布尔检索模型基本概念 布尔检索模型: 检索模型是判断文档内容与用户相关性的核心技术,以大规模网页搜索为例,在海量网页中与用户查询关键词相关的网页可能会有成千上万个,甚至耕读哦.那么信息 ...

  10. 一款我常用到的手机app

    我从初中开始接触电子书,后来渐渐养成了看电子书的习惯.在阅读电子书的过程中自然要接触到各种各样的阅读类的手机app,比如书旗.qq阅读.百度阅读器等等.个人感觉掌阅使用起来好一些. 首先,它的界面很简 ...