当前位置: 代码迷 >> 综合 >> android 开发 更好的数据存放,回调,处理class模式,适合与各种布局适配器class一起使用
  详细解决方案

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

热度:23   发布时间:2023-10-30 12:30:18.0

预先导入数据模式:


/*** 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;}}//创建listprivate List<Item> list = new ArrayList<Item>();//添加数据,并且返回集合public List<Item> initdata(){list.clear();list.add(new Item(R.mipmap.default_avatar, "儿子", new ClickEvent() {@Overridepublic void onClick(Context c) {Toast.makeText(c,"你点击了儿子",Toast.LENGTH_SHORT).show();}}));list.add(new Item(R.mipmap.default_avatar, "女儿", new ClickEvent() {@Overridepublic 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.在适配器里实现的点击事件,回调:

@Overridepublic 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() {@Overridepublic 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:每个设备的数据处理classtime: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;}}}

 

  相关解决方案