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

1.数据class

package net.yt.yuncare.ui.DeviceList;


import android.content.Context;
import android.widget.Toast;

import net.yt.yuncare.R;

import java.util.ArrayList;
import java.util.List;

/**
 * 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;
    }

猜你喜欢

转载自blog.csdn.net/qq_37217804/article/details/81105400
今日推荐