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 ...
随机推荐
- JAVA概率实现--一篇最常见、最通用解决方案
日常场景:某活动抽奖,控制各等奖的出现概率 比如控制A(中奖率):20%:B(获得优惠券率):30%:C(谢谢参与率):50% 下面以封装好在main()函数里,上代码(记得导入相应的包): publ ...
- es6新增 set
Set 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. var s = new Set(); [2, ...
- 第二章:深入分析java I/O的工作机制
.2.1 java的I/O类库的基本架构 I/O的机器获取和交换信息的主要渠道,在当今数据大爆炸时代,I/O问题尤其突出,很容易成为一个性能瓶颈,Java在I/O上也一直做持续的优化,现在也引入了NI ...
- TensorFlow占位符操作:tf.placeholder_with_default
tf.placeholder_with_default 函数 placeholder_with_default( input, shape, name=None ) 请参阅指南:输入和读取器>占 ...
- 最短路,dijstra算法
#include<iostream> #include<stdio.h> #include<math.h> #include<vector> using ...
- ulimit系统资源的设定
使用ulimit -a 可以查看系统使用的资源 core file size 设定core文件的最大值,单位为区块,如果指定为0,不会产生core文件 data seg size 设定数据段的最大值, ...
- iOS动画学习
学习一下动画,感谢以下大神的文章: UIView:基础动画.关键帧动画.转场动画 Core Animation :基础动画,关键帧动画,动画组,转场动画,逐帧动画 CALayer :CALaye ...
- linux下编译自己的库文件实践
有了我传的那个资料,这个就没什么用了,那个太经典了,这个就是记录我自己的实践.:-) linux下文件的类型是不依赖于其后缀名的,但一般来讲:.o,是目标文件,相当于windows中的.obj文件.s ...
- php之异常处理
<?php declare(strict_types = 1); function demo(int $v):int{ return 1; } try{ demo("1"); ...
- 【linux基础】cuDNN版本查询
参考 1. 查看cudnn版本; 完