预先导入数据模式:


/**
* 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. day060 ajax文件上传 json补充

    请求头ContentType 文件上传时需要指定请求头,常见的类型有3种: 1.application/x-www-form-urlencoded(可以类比成在url后面拼接的形式发送,即a=1&am ...

  2. 入坑deep learning 1

    想体验一下跑keras的感觉,按照这个小妹妹的教程:https://zhuanlan.zhihu.com/p/28333410 0. 大概花了十来个小时才搞定初步的小环境 1. 在linux 16.0 ...

  3. C++中模板的特化与偏特化

    1.引言 C++中的模板分为类模板和函数模板,虽然它引进到C++标准中的时间不是很长,但是却得到了广泛的应用,这一点在STL中有着充分的体现.目前,STL在C++社区中得到了广泛的关注.应用和研究.理 ...

  4. OSI七层模型与TCP/IP五层模型(转)

    reference:https://www.cnblogs.com/qishui/p/5428938.html         博主是搞是个FPGA的,一直没有真正的研究过以太网相关的技术,现在终于能 ...

  5. python笔记15-集合

    集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不能根据下标来取值,不重复的,也就是说集合中是没有重复的数据 #定义集合:# #方法1:nums = [1,1,1,1,23,4,56]#定义 ...

  6. 忘记Linux用户密码怎么办?

           忘记密码解决办法(centos6.5版本) 1.开机时,在此页面一直按ESC 2.然后进入以下界面时,按一下字母  “E”    键 (3)再按字母   “E”   键 (4)之后 输入 ...

  7. Using Dispatcher

    he following code example shows how you might attempt to update the UI from your task logic. // The ...

  8. 阿里云centos7使用yum安装mysql的正确姿势

    yum快速安装mysql 新增yum源 rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm 查看可用的 ...

  9. spring-task解决定时问题

    *  spring3以上版本,spring-content自带 spring-task ,来解决工程中的定时问题  基于注解配置spring定时任务 spring配置文件如下: <?xml ve ...

  10. 后台获取用户登录token 和获取前端参数方法

    //获取request请求中所有参数 Enumeration<String> names = request.getParameterNames(); HashMap<String, ...