android 开发 更好的数据存放,回调,处理class模式,适合与各种布局适配器class一起使用
预先导入数据模式:
/**
* 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一起使用的更多相关文章
- Android开发:SharedPreferences 存储数据、获取数据
Android开发:SharedPreferences 存储数据.获取数据 email:chentravelling@163.com 开发环境:win7 64位,Android Studio. 关于S ...
- Android开发学习之SQLite数据存取浅析
一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低 ...
- 让你Android开发更简单
转载:http://www.jianshu.com/p/22ff8b5fdadc 搭建一个新的Android项目,你会怎么做? 每个人对应用框架的理解不相同,但是最终达到的效果应该是一样: ①降低项目 ...
- 这些小工具让你的Android 开发更高效
在做Android 开发过程中,会遇到一些小的问题.尽管自己动手也能解决.可是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效. Vy ...
- Android开发之自定义组件和接口回调
说到自定义控件不得不提的就是接口回调,在Android开发中接口回调用的还是蛮多的.在这篇博客开始的时候呢,我想聊一下iOS的自定义控件.在iOS中自定义控件的思路是继承自UIView, 在UIVie ...
- Android开发学习之路--数据持久化之初体验
上班第一天,虽然工作上处于酱油模式,但是学习上依旧不能拉下,接着学习android开发吧,这里学习数据持久化的 知识. 其实数据持久化就是数据可以保存起来,一般我们保存数据都是以文件,或者数据库的形式 ...
- Android开发中多进程共享数据
# 背景 最近在工作中遇到一个需求,需要在接收到推送的时候将推送获得的数据存起来,以供app启动时使用.我们会认为这不是So easy吗?只要把数据存到SharedPreferences中,然后让ap ...
- Android开发学习---如何写数据到外部存储设备(sd卡),Environment.getExternalStorageDirectory,怎么获取sd卡的大小?
本文主要介绍如何写数据到sd卡,这里主要到的技术是Environment中的方法. 1. 2.实现代码: /datasave/src/com/amos/datasave/savePasswordSer ...
- android开发中获取<meta-data>数据
在 AndroidManifest.xml 中,<meta-data>元素是一个键值对,往往被包含在<application> .<activity>.<se ...
随机推荐
- Windows查看Java内存使用情况
Windows查看Java程序运行时内存使用情况 1.在cmd命令窗口输入 jconsole ,弹出Java监视和管理控制台窗口 2.连接本地进程,首先需要知道想查看的进程ID ( pid ) 在c ...
- linux远程管理常用命令
目标 关机/重启 shutdown 查看或配置网卡信息 ifconfig ping 远程登录和复制文件 ssh scp 01. 关机/重启 序号 命令 对应英文 作用 01 shutdown 选项 时 ...
- [SQL]Temporal 异常处理经验
解决20762 Module 3 课程关于Temporal Table 在 Demo 时的错误 首先该Demo 主要是搭配AdvantureWorks2016 的资料库,使用Person.Person ...
- python自学第14天 类
面向对象:世界万物,皆可分类:世界万物,皆为对象 只要是对象,就肯定属于某种品类. 只要是对象,就肯定有属性 类 对象 封装 继承 多态 一个接口,多种实现
- Fibonacci Heaps
Mergeable heapsA mergeable heap is any data structure that supports the following five operations,in ...
- 关于vuex和Promise reject 或.catch 的报错处理。
在我们开发过程中,经常会使用vuex来管理接口请求和返回数据. 在vue组件页面使用computed来读取vuex中state的数据. getTaskList({ commit }, payload) ...
- 莫烦tensorflow(8)-CNN
import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data#number 1 to 10 dat ...
- 多线程callable使用方法
Runnable是执行工作的独立任务,但是它不返回任何值.在JavaSE5中引入的Callable是一种具有类型参数的泛型,它的类型参数表的是从方法call()中返回的值,并且必须使用Executor ...
- Shiro 整合SpringMVC 并实现权限管理,登录和注销
Shiro 整合SpringMVC 并且实现权限管理,登录和注销 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring S ...
- UILabel Text显示不同的颜色
UILabel的text实现不同的颜色. NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithStr ...