XUtils3.0

首先導入依賴

compile 'org.xutils:xutils:3.3.36'

創建一個類

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //初始化xutils3
        x.Ext.init(this);
        //輸出日誌 設置爲false就是爲了不影響性能
        x.Ext.setDebug(false);


    }
    //數據庫
    public static DbManager getDb() {
        //對daoConfig初始化 進行配置
        DbManager.DaoConfig daoConfig = new DbManager.DaoConfig().setDbName("bw.db").setDbDir(new File("/mnt/sdcard")).setDbVersion(1);
        DbManager db = x.getDb(daoConfig);
        return db;
    }
}
在MainActivity類裏寫方法

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import org.xutils.DbManager;
import org.xutils.common.Callback;
import org.xutils.db.sqlite.WhereBuilder;
import org.xutils.ex.DbException;
import org.xutils.http.RequestParams;
import org.xutils.image.ImageOptions;
import org.xutils.view.annotation.ContentView;
import org.xutils.view.annotation.Event;
import org.xutils.view.annotation.ViewInject;
import org.xutils.x;

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

/**
 * 註解的方式加載佈局
 */
@ContentView(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
    @ViewInject(R.id.tv)
    TextView tv;
    @ViewInject(R.id.iv)
    ImageView iv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.activity_main);
        /**
         *   初始化註解
         */

        x.view().inject(this);
        tv.setText("這是我使用xutils3的註解方式");

    }


    /**
     * 1,方法必須私有限定,
     * 2,方法參數形式必須和type對應的Listener接口一致.
     * 3,註解參數value支持數組: value={id1, id2, id3}
     * type默認View.OnClickListener.class,故此處可以簡化不寫,@Event(R.id.bt_main)
     * 默認的是單擊事件
     */
    // @Event(type = View.OnClickListener.class, value = R.id.tv)
    @Event({R.id.tv, R.id.iv, R.id.bt_add, R.id.bt_find, R.id.bt_update, R.id.bt_delete})
    private void testOnClick(View view) {
        DbManager db = new MyApplication().getDb();
        switch (view.getId()) {
            case R.id.tv:
                Toast.makeText(MainActivity.this, "這是我使用註解方式實現點擊事件", Toast.LENGTH_SHORT).show();
                getData();
                break;
            case R.id.iv:
                Toast.makeText(MainActivity.this, "這是我使用註解方式實現點擊事件", Toast.LENGTH_SHORT).show();
                getServerData();
                //通過ImageOptions.Builder().set方法設置圖片的屬性
                ImageOptions options = new ImageOptions.Builder().setCircular(true).setCrop(true).setSize(100, 100).setLoadingDrawableId(R.mipmap.ic_launcher).build();
                x.image().bind(iv, "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1489035859303&di=a701b850fecd73173a020305d46eec77&imgtype=0&src=http%3A%2F%2Fb.hiphotos.baidu.com%2Fzhidao%2Fpic%2Fitem%2F1f178a82b9014a90e7eb9d17ac773912b21bee47.jpg", options);

                break;
            case R.id.bt_add:
                //插入
                Toast.makeText(MainActivity.this, "保存數據", Toast.LENGTH_SHORT).show();

                List<Student> students = new ArrayList<>();
                students.add(new Student("zhangsan"));
                students.add(new Student("lisi"));
                students.add(new Student("wangwu"));
                students.add(new Student("zhaoliu"));
                try {
                    db.save(students);
                    Toast.makeText(MainActivity.this, "保存數據成功", Toast.LENGTH_SHORT).show();
                } catch (DbException e) {
                    e.printStackTrace();
                }
                break;
            case R.id.bt_find:
                try {
                    Student student = db.findFirst(Student.class);
                    Log.i("xxx", student.toString());
                    List<Student> studentList = db.findAll(Student.class);
                    for (Student student1 : studentList) {
                        Log.i("xxx", student1.toString());
                    }


                } catch (DbException e) {
                    e.printStackTrace();
                }
                break;
            case R.id.bt_update:
                try {
                    //第一種方式 更新第一個對象的名字
                    Student student = db.findFirst(Student.class);
                   /* student.setName("wowo");
                    db.update(student, "name");*/
                    //第二種方式
                   /* WhereBuilder b = WhereBuilder.b();
                    b.and("id", "=", student.getId());
                    KeyValue value = new KeyValue("name", "sisi");
                    db.update(Student.class, b, value);*/
                    //第三種方式
                    student.setName("xixi");
                    db.saveOrUpdate(student);
                    Toast.makeText(MainActivity.this, "更新成功", Toast.LENGTH_SHORT).show();

                } catch (DbException e) {
                    e.printStackTrace();
                }
                break;
            case R.id.bt_delete:
                try {
                    //刪除表中的所有數據
                    //  db.delete(Student.class);
                    //根據條件刪除表中的數據
                    WhereBuilder b = WhereBuilder.b();
                    b.and("id", ">", "5");
                    b.and("id", "<", "8");
                    db.delete(Student.class, b);
                    Toast.makeText(MainActivity.this, "刪除成功", Toast.LENGTH_SHORT).show();
                } catch (DbException e) {
                    e.printStackTrace();
                }
                break;
        }
    }

    /**
     * 長按事件
     *
     * @param v
     * @return
     */
    @Event(type = View.OnLongClickListener.class, value = R.id.iv)
    private boolean testOnLongClick(View v) {
        switch (v.getId()) {
            case R.id.iv:
                Toast.makeText(MainActivity.this, "這是我使用註解方式實現長按事件", Toast.LENGTH_SHORT).show();
                postData();
                break;
        }
        return true;
    }

    //post請求方式
    private void postData() {
        String url = "http://www.93.gov.cn/93app/data.do";
        RequestParams params = new RequestParams(url);
        params.addBodyParameter("channelId", "0");
        params.addParameter("startNum", "0");
        params.addHeader("head", "android");
        x.http().post(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                Log.i("xxx", result);
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });

    }

    //get請求方式 獲取網絡數據 緩存
    private void getData() {
        String url = "http://www.93.gov.cn/93app/data.do";
        RequestParams params = new RequestParams(url);
        params.addQueryStringParameter("channelId", "0");
        params.addQueryStringParameter("startNum", "0");
        params.setCacheMaxAge(1000 * 60);
        x.http().get(params, new Callback.CacheCallback<String>() {
            private String result = null;

            @Override
            public boolean onCache(String result) {
                this.result = result;
                //默認false不走緩存 true 走緩存 過期之後就不走緩存
                Toast.makeText(MainActivity.this, "走緩存", Toast.LENGTH_SHORT).show();
                return true;
            }

            @Override
            public void onSuccess(String result) {
                if (result != null) {
                    this.result = result;
                }
                Log.i("aaa", result);

            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });

    }

    //get請求方式 獲取網絡數據
    private void getServerData() {
        String url = "http://www.93.gov.cn/93app/data.do";
        RequestParams params = new RequestParams(url);
        params.addQueryStringParameter("channelId", "0");
        params.addQueryStringParameter("startNum", "0");
        x.http().get(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                Log.i("xxx", result);
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });


    }


}
數據庫類

import org.xutils.db.annotation.Column;
import org.xutils.db.annotation.Table;

/**
 * 1. 類的用途 數據庫表跟實體類對象進行關聯
 * 2. @author forever
 * 3. @date 2017/3/9 15:10
 * onCreated 當第一次創建表的時候執行sql語句
 */
@Table(name = "Student", onCreated = "")
public class Student {
    /**
     * name = "id",表中的一個字段
     * isId = true,是否是主鍵
     * autoGen = true, 是否自增長
     * property = "NOT NULL" 添加約束
     */
    @Column(name = "id", isId = true, autoGen = true, property = "NOT NULL")
    private int id;
    @Column(name = "name")
    private String name;

    //無參構造方法如果不添加的話 數據庫表創建不成功
    public Student() {
    }

    public Student(String name) {
        this.name = 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;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}
希望對大家有所幫助

發佈了18 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章