zoukankan      html  css  js  c++  java
  • xutils3.0 使用 注意事项

    0.0

    https://github.com/wyouflf/xUtils3

    以as为例,三步即可使用:

    一.gradle构建时添加依赖

    compile 'org.xutils:xutils:3.3.40'

    二.清单文件中添加权限 

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    三.初始化

    // 在application的onCreate中初始化
    @Override
    public void onCreate() {
        super.onCreate();
        x.Ext.init(this);
        x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
        ...
    }

    -------------------------------------------------------------------------------------------------------

    -------------------------------------------------------------------------------------------------------

    -------------------------------------------------------------------------------------------------------

    -----使用:

    1.事件注解 (OnClick,OnLongClick,OnTouchListenre等)

    /**
     * 1. 方法必须私有限定,
     * 2. 方法参数形式和方法返回值必须和type对应的Listener接口一致.
     * 3. 注解参数value支持数组: value={id1, id2, id3}
     * 4. 其它参数说明见{@link org.xutils.event.annotation.Event}类的说明.
     **/ 
    //这是OnClick 
    @Event(value = R.id.btn_test_baidu1,type = View.OnClickListener.class)
    private void onTestBaidu1Click(View view) {
    ...
    }
     
    //这是OnTouchListener
    @Event(value = R.id.btn_test_baidu2,type = View.OnTouchListener.class)
    private boolean onTestBaidu1Touch(View view,MotionEvent event) {
    ...
    }
    //这是Adapter中的item单击事件(ListView和它的Adapter)
    @Event(value = R.id.listview, type = AdapterView.OnItemClickListener.class) 
    private void onImageItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent = new Intent(this.getActivity(), BigImageActivity.class);
            intent.putExtra("url", imageListAdapter.getItem(position).toString());
            this.getActivity().startActivity(intent);
     }

    2.View注解

    2.1------Activity.采用自定义BaseActivity方式

    在自定义的BaseActivity中加入

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            x.view().inject(this);//注解view
        }

    Activity中使用:

    @ContentView(R.layout.activity_big_image)//这里注解布局
    public class BigImageActivity extends BaseActivity { 
        @ViewInject(R.id.iv_big_img) private ImageView iv_big_img; //注解view 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState); 
            ImageOptions imageOptions = new ImageOptions.Builder()
                    // 加载中或错误图片的ScaleType
                    //.setPlaceholderScaleType(ImageView.ScaleType.MATRIX)
                    // 默认自动适应大小
                    // .setSize(...)
                    .setIgnoreGif(false)
                    // 如果使用本地文件url, 添加这个设置可以在本地文件更新后刷新立即生效.
                    //.setUseMemCache(false)
                    .setImageScaleType(ImageView.ScaleType.CENTER).build(); 
            x.image().bind(iv_big_img, getIntent().getStringExtra("url"), imageOptions);//加载图片(带自定义options)
           x.image().bind(iv_big_img, getIntent().getStringExtra("url"));//加载图片(不带自定义options)
     }

    2.2-------fragment中同样采用BaseFragment形式

    在自定义的BaseFragment中加入

    public class BaseFragment extends Fragment { 
        private boolean injected = false; 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            injected = true;
            return x.view().inject(this, inflater, container);//注解view
        } 
        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            if (!injected) {//防止重复注解
                x.view().inject(this, this.getView());
            }
        }
    }

    fragment中使用(同Activity):

    @ContentView(R.layout.fragment_image)                  //注解布局
    public class ImageFragment extends BaseFragment { 
        ImageOptions imageOptions; 
        @ViewInject(R.id.img) private ImageView imageview; //注解view
    
        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            imageOptions = new ImageOptions.Builder()
                    .setSize(DensityUtil.dip2px(120), DensityUtil.dip2px(120))
                    .setRadius(DensityUtil.dip2px(5))
                    // 如果ImageView的大小不是定义为wrap_content, 不要crop.
                    .setCrop(true) // 很多时候设置了合适的scaleType也不需要它.
                    // 加载中或错误图片的ScaleType
                    //.setPlaceholderScaleType(ImageView.ScaleType.MATRIX)
                    .setImageScaleType(ImageView.ScaleType.CENTER_CROP)
                    .setLoadingDrawableId(R.mipmap.ic_launcher)
                    .setFailureDrawableId(R.mipmap.ic_launcher)
                    .build(); 
          x.image().bind(imgview, "/sdcard/test.jpg", imageOptions);///加载图片
        }
         
    }

    3.db注解(orm),这里是简单的使用 一对多,多对一等参考sample项目

    3.1写db的bean

    @Table(name = "Student") //这是表名
    public class Student { 
     @Column(name = "id", isId = true)  private int id ;      //字段名(isId设置唯一键值)
     @Column(name = "name")             private String name;  //字段名   
    
    public int getId() {  return id; } 
    public void setId(int id) { this.id = id; }
    public String getName() { return name; } 
    public void setName(String  name) { this.name = name; } 
     
    }

    3.2 设置DaoConfig数据库路径参数,更新字段等(可以只配置一次,一般在application中配置一次)

      DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
                .setDbName("test.db")
                // 不设置dbDir时, 默认存储在app的私有目录.
                .setDbDir(new File("/sdcard")) // "sdcard"的写法并非最佳实践, 这里为了简单, 先这样写了.
                .setDbVersion(2)
                .setDbOpenListener(new DbManager.DbOpenListener() {
                    @Override
                    public void onDbOpened(DbManager db) {
                        // 开启WAL, 对写入加速提升巨大
                        db.getDatabase().enableWriteAheadLogging();
                    }
                })
                .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
                    @Override
                    public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
                        // TODO: ...
                        // db.addColumn(...);
                        // db.dropTable(...);
                        // ...
                        // or
                        // db.dropDb();
                    }
                });

    3.3 使用:

    先拿到db.

    DbManager db = x.getDb(daoConfig);

    //增

    Student s = new Student();

               s.setId(10);

               s.setName("xiaom"); 

            db.saveOrUpdate(s);//一种更新,如果数据库中没有,会创建并保存 

            db.save(s);             //直接保存,如存在会保存失败

    //删

    1.直接删除

    Student s = new Student();

               s.setId(10);

               s.setName("xiaom"); 

    db.delete(s);

    2.查询到之后再进行删除

     Student s =db.selector(Student.class).where("id","=",10).findFirst(); 

    db.delete(s);

    3.//直接根据id删除

    db.deleteById(Student.class,1);

    4.根据where语句删除

    db.delete(Student.class,WhereBuilder?)

    //改

    //查

    //查询所有name中包含w,并且id>32  的个数
    long count = db.selector(Student.class).where("name", "LIKE", "w%").and("id", ">", 32).count();
    //查询,简单的查询第一个
     Student s = db.selector(Student.class).findFirst();
    //查询,id在1到3之间,和3到6之间的第一个
     Student s = db.selector(Student.class).where("id", "in", new int[]{1, 3, 6}).findFirst();
    //查询多个,20<id<54的所有的  并根据id排序
    List<Student> list = db.selector(Student.class)
                        .where("id", "<", 54)
                        .and("id", ">", 20)
                        .orderBy("id")
                        .limit(10).findAll();

    网络:

    添加重定向  

       自定义class,实现RedirectHandler接口,并实例化

    myRedirectHandler  redirectHandler =new myRedirectHandler();
    后添加到params中:
    params.setRedirectHandler(redirectHandler);


  • 相关阅读:
    安卓学习记录(五)——体温表APP.2
    今日学习
    每日学习
    AS插件快速生成javabean
    LA 5842 Equipment (状态压缩+dp)
    LA 4794 Sharing Chocolate (搜索)
    LA 5844 Leet (dfs 搜索)
    uva 11627 Slalom (二分法)
    ZOJ 3031 Robotruck (dp + 单调队列)
    uva 10012 How Big Is It? (greedy + enumerate)
  • 原文地址:https://www.cnblogs.com/andlp/p/xutils3.html
Copyright © 2011-2022 走看看