Dhroid框架笔记

dhroid 目前包含了6大组件供大家使用
1.Ioc容器: (用过spring的都知道)视图注入,对象注入,接口注入,解决类依赖关系
2.Eventbus: android平台事件总线框架,独创延时事件,事件管理轻松
3.Dhnet: 网络http请求的解决方案,使用简单,减少代码,自带多种网络访问缓存策略
4.adapter模块: 数据绑定轻松,不用写多余的adapter,天生网络支持(一行代码搞定加载,刷新问题)
5.DhDb: android中sqlite的最轻量orm框架(增删改查轻松搞定)
6.Perference: android自带Perference 升级版,让你的Perference更强大,更方便

说了这么多,来点干货吧

注解应用

//对应方法toTest,对应View是toIocTest,可以在toTest(View v)中做时间处理@InjectView(id = R.id.ioctest, click = "toTest")View toIocTest;//无对应方法,可以直接对title_name进行相应的操作
@InjectView(id = R.id.title_name)TextView title_name;

Dhnet应用

get方式,获取到数据后,更新UI

    /**
     * get测试
     *
     * @param key
     * */
    public void onTestGet(View v) {
        String URL = "http://youxianpei.c.myduohuo.com/mobile_index_adbjsonview?id=63";
        DhNet net = new DhNet(URL);
        // 添加参数
        net.addParam("key1", "key1");
        net.doGet(new NetTask(this) {
            @Override
            public void onErray(Response response) {
                super.onErray(response);
                // 错误处理,出错后会先关闭对话框然后调用这个方法,默认不处理
            }

            @Override
            public void doInBackground(Response response) {
                super.doInBackground(response);
                // 后台处理信息
                // 可以向UI层传递数据
                response.addBundle("keyBundle", "N0");
                transfer(response, 100);
            }

            @Override
            public void doInUI(Response response, Integer transfer) {
                if (transfer == 100) {
                    dialoger.showToastShort(getActivity(), response.getBundle("keyBoundle").toString());
                } else {
                    resultV.setText(response.plain());
                }

            }
        });
    }

get方式,获取数据中显示进度条,取得数据后更新UI

    /**
     * get测试同时打开进度
     *
     * @param v
     */
    public void onTestGetDialoge(View v) {
        DhNet net = new DhNet(
                "http://youxianpei.c.myduohuo.com/mobile_index_adbjsonview?id=63");
//        net.setProgressMsg("进度提示消息");
        //对话框样式请在IOC实现IDialog 接口
        net.doGet(true,"进度提示消息",new NetTask(this) {
            @Override
            public void doInUI(Response response, Integer transfer) {
                resultV.setText(response.plain());

            }
        });
    }

post方式

/**
     * post测试
     *
     * @param v
     */
    public void onTestPost(View v) {
        DhNet net = new DhNet(
                "http://youxianpei.c.myduohuo.com/mobile_index_adbjsonview?id=63");
        NetTask task = new NetTask(this) {
            @Override
            public void doInUI(Response response, Integer transfer) {
                resultV.setText(response.plain());
            }
        };
        if (v.getId() == R.id.posttest) {
            net.doPost(task);
        } else if (v.getId() == R.id.postdialogtest) {
            net.doPostInDialog(task);
        }
    }

解析JSON

    public void onTrans(final View v) {
        DhNet net = new DhNet();
        net.setUrl("http://youxianpei.c.myduohuo.com/mobile_index_adbjsonview?id=63&temp=trans");
        net.doGet(new NetTask(getActivity()) {
            @Override
            public void doInUI(Response response, Integer transfer) {
                // 结果转JOSN
                if (v.getId() == R.id.to_json) {
                    JSONArray array = response.jSONArrayFromData();
                    resultV.setText(array.toString());
                    // 获取某个节点下的json
                    // JSONObject urlinfo=response.jSONFrom("xxx.xxx");
                    // dialoger.showToastLong(getActivity(),
                    // urlinfo.toString());
                    // 这是结果的纯文本
                    // response.plain();
                    // 获取某个节点下的jsonarray
                    // response.jSONArrayFrom("xxx.xxx");
                    // 将整个节点转为json对象
                    // response.jSON();
                } else if (v.getId() == R.id.to_bean) {
                    //
                    List<AdBean> ads = response.listFrom(AdBean.class, "data");
                    resultV.setText(ads.toString());
                    // 获取某个节点下的对象
                    // AdBean bean=response.modelFrom("xxx.xxx");
                    // dialoger.showToastLong(getActivity(), bean.toString());
                }
            }
        });
    }

Adapter

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.adapter_list_activity);
        adapter=new NetJSONAdapter("http://xlzx.sinaapp.com/json.php", this, R.layout.adapter_item);
        adapter.setDataBulider(new DataBulider() {
            @Override
            public JSONArray onDate(Response response) {
                //如果你的结果不是在某个节点而是需要处理后才有的
                return response.jSONArrayFrom("employees");
            }
        });

        //添加参数
        adapter.addParam("key1", "key1");
        //数据绑定
        adapter.addField("name", R.id.name);
        adapter.addField("title", R.id.title);
        //数据绑定 进行文本修饰
        adapter.addField("pubdate", R.id.time,DemoValueFixer.time);
        //数据绑定 进行图片修饰
        adapter.addField("user_faceimg", R.id.pic,DemoValueFixer.pic_round);

        adapter.addField(new FieldMap("activeaddress", R.id.content) {
            @Override
            public Object fix(View itemV, Integer po, Object o, Object jo) {
                JSONObject joo=(JSONObject) jo;
                //这里可以做一些额外的工作
                itemV.findViewById(R.id.icon).setVisibility(JSONUtil.getInt(joo, "status")==1?View.VISIBLE:View.INVISIBLE);
                return o;
            }
        });
        //内部点击事件
        adapter.setOnInViewClickListener(R.id.pic, new BeanAdapter.InViewClickListener() {

            @Override
            public void OnClickListener(View itemV, View v, Integer po,
                    Object jo) {
                JSONObject joo=(JSONObject) jo;
                dialoger.showToastLong(getActivity(), JSONUtil.getString(joo, "username"));
            }
        });

        //加载成功后回调
        adapter.setOnLoadSuccess(new LoadSuccessCallBack() {
            @Override
            public void callBack(Response response) {
                if(response.isSuccess()){
                    dialoger.showToastShort(getActivity(), "加载成功");
                    if(adapter.getPageNo()==1){
                        listV.setSelection(0);
                    }

                }
            }
        });

        adapter.refresh();

        adapter.useCache(CachePolicy.POLICY_CACHE_AndRefresh);
        adapter.showProgressOnFrist(true);
        listV.setAdapter(adapter);

    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.adapter_list_refresh_more);
        adapter=new NetJSONAdapter("http://xlzx.sinaapp.com/json.php", this, R.layout.adapter_item);
        adapter.setDataBulider(new DataBulider() {
            @Override
            public JSONArray onDate(Response response) {
                //如果你的结果不是在某个节点而是需要处理后才有的
                return response.jSONArrayFrom("employees");
            }
        });

        //添加参数
        adapter.addParam("key1", "key1");
        //数据绑定
        adapter.addField("name", R.id.name);
        adapter.addField("title", R.id.title);
        //数据绑定 进行文本修饰
        adapter.addField("pubdate", R.id.time,DemoValueFixer.time);
        //数据绑定 进行图片修饰
        adapter.addField("user_faceimg", R.id.pic,DemoValueFixer.pic_round);

        adapter.addField(new FieldMap("activeaddress", R.id.content) {
            @Override
            public Object fix(View itemV, Integer po, Object o, Object jo) {
                JSONObject joo=(JSONObject) jo;
                //这里可以做一些额外的工作
                itemV.findViewById(R.id.icon).setVisibility(JSONUtil.getInt(joo, "status")==1?View.VISIBLE:View.INVISIBLE);
                return o;
            }
        });
        //内部点击事件
        adapter.setOnInViewClickListener(R.id.pic, new BeanAdapter.InViewClickListener() {

            @Override
            public void OnClickListener(View itemV, View v, Integer po,
                    Object jo) {
                JSONObject joo=(JSONObject) jo;
                dialoger.showToastLong(getActivity(), JSONUtil.getString(joo, "username"));
            }
        });

        //加载成功后回调
        adapter.setOnLoadSuccess(new LoadSuccessCallBack() {
            @Override
            public void callBack(Response response) {
                if(response.isSuccess()){
                    dialoger.showToastShort(getActivity(), "加载成功");
                    if(adapter.getPageNo()==1){
                        listV.setSelection(0);
                    }

                }
            }
        });

        adapter.refresh();
        adapter.showProgressOnFrist(true);
        listV.setAdapter(adapter);

    }
时间: 2024-10-02 19:29:49

Dhroid框架笔记的相关文章

Dhroid框架笔记(DhNet、Adapter)

3.1.1 DhNet用于获取网络中的数据 DhNet net=new DhNet("路劲"); net.addParam("key", "参数").addParam("key2", "参数2"); net.doGet(new NetTask(this) { @Override public void doInUI(Response response, Integer transfer) {//处理返回结果

深度学习Keras框架笔记之AutoEncoder类

深度学习Keras框架笔记之AutoEncoder类使用笔记 keras.layers.core.AutoEncoder(encoder, decoder,output_reconstruction=True, weights=None) 这是一个用于构建很常见的自动编码模型.如果参数output_reconstruction=True,那么dim(input)=dim(output):否则dim(output)=dim(hidden). inputshape: 取决于encoder的定义 ou

深度学习Keras框架笔记之TimeDistributedDense类

深度学习Keras框架笔记之TimeDistributedDense类使用方法笔记 例: keras.layers.core.TimeDistributedDense(output_dim,init='glorot_uniform', activation='linear', weights=None W_regularizer=None, b_regularizer=None, activity_regularizer=None, W_constraint=None, b_constraint

【Java】Java集合框架笔记

今天在QQ群上跟人家交流,错误得把List接口说成了ArrayList的父类,当时脸都红了,不行,一定要跪着回去复习Java,所以把Java的书拿出来,把集合框架的认真仔细的看了一遍,在EverNote上写了一篇笔记,所以搬到博客上来跟大家分享一下.以下就是了. Java集合框架支持以下两种类型的容器: 一种是为了存储一个元素的集合,简称为集合(collection) 另一种是为了存储键值对,成为图(map) 另外:Java集合框架内的所有实例类都实现了Clonable和Serializable

Python django框架笔记(三):django工作方式简单说明和创建用户界面

(一)  说明 简单说明下django的工作方式,并举2个例子. (二)  Django工作方式 假定我们有下面这些文件 ,这里在前2篇的基础上增加了 templates目录(存放html文件) 和static目录(存放图片JS.css等) (三)   实现一个完整的用户界面 #假设已经创建好了项目和应用.下面URLconf和视图函数没什么先后关系,根据自己喜好,你可以先写视图函数,也可以先定义URLconf. 有下面几个步骤 (1)   创建模型 (2)   定义项目的URLconf(mysi

[Java] SSH框架笔记_SSH三大框架的工作原理及流程

Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>读取并解析映射信息3.通过config.buildSessionFactory();//创建SessionFactory4.sessionFactory.openSession();//打

Spring框架笔记(二十四)——Spring中的JDBC的两种使用方式

为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架. 作为 Spring JDBC 框架的核心, JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法. 每个模板方法都能控制整个过程, 并允许覆盖过程中的特定任务. 通过这种方式, 可以在尽可能保留灵活性的情况下, 将数据库存取的工作量降到最低. 现在我们来介绍一下,各种CRUD可能用到的Spring JDBC的API: 使用 JdbcTemplate 更新数

Connector框架笔记

一个ResourceAdapter可以提供不同类型的Connection: Outbound communication(由JavaEE应用服务器创建到EIS的连接): Inbound communication(由EIS创建到JavaEE应用服务器的连接): Bi-directional communication(双工通信连接): 连接器框架定义了下面几个应用服务器与EIS之间的接口: Connection Management 连接管理接口(连接管理,连接池) Transaction Ma

GEF - 制作一个简单图形化编辑框架笔记1

在首先来看看GEF是什么,GEF的全称是Graphical Editing Framework,图形化框架,可以利用此框架做图形化编.他的基本原理是采用MVC开发模式. 以下是一些例子 GEF里面包含有, EditorPart - 编辑的容器,所有的图形都可以规则都存放在这个容器当中 EditPart - 图形的C部分,控制图形的内容与展示的重要中介 Figure - 图形的V部分,关于图形的形状部分,都会放在这里 Model - 图形的M部分,记录图形的属性 EditorPart 这部分是容器