安卓高级主题——XUtils3

XUtils框架

使用Gradle构建时添加一下依赖即可

compile 'org.xutils:xutils:3.5.1'

需要的权限

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

初始化,创建MyApplication.java

import android.app.Application;

import org.xutils.x;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        x.Ext.init(this);
//        x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
    }
}

在清单文件application中添加

 <application android:name=".MyApplication"></application>

数据库模块

参考博客:https://blog.csdn.net/huningjun/article/details/79869232

创建User

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

@Table(name = "user", onCreated = "CREATE UNIQUE INDEX index_name ON user(id,name,email)")
public class User {
    /**
     * 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;
    @Column(name = "email")
    private String email;

    public User() {
    }

    public User(String name, String email) {
        this.name = name;
        this.email = email;
    }

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

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

创建数据库

    private void createDb() {
        daoConfig = new DbManager.DaoConfig()
                //默认在data/data/package name/database/下创建
                .setDbName("test.db")
                .setDbVersion(1)
                .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) {
                    }
                });

        db = x.getDb(daoConfig);
    }

添加数据

    private void save() {
        try {
            User user = new User("wangwu","789456@qq.com");
            db.save(user);
            System.out.println("添加成功");
            findAll();
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

根据条件删除数据

    public void delete(int id){
        try {
//            db.delete(User.class); //表中数据将被全部删除

            WhereBuilder b = WhereBuilder.b();
            b.and("id","=",2);
            db.delete(User.class, b);
            findAll();
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

 更新数据

    public void updateById(int id){
        try {
            WhereBuilder b = WhereBuilder.b();
            b.and("id","=",id); //构造修改的条件
            KeyValue name = new KeyValue("name","lisi2");
            db.update(User.class,b,name);
            findAll();
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

根据条件查询数据


    public void findeById(int id){
        try {
            List<User> all = null;
            all = db.selector(User.class).where("id","=",id)
//                    .and("id",">",4)
                    .findAll();

            List<String > list = new ArrayList<String>();
            for(int i=0;i<all.size();i++){
                list.add(all.get(i).toString());
            }
            adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list);
            lv1.setAdapter(adapter);
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

查询全部数据

    private void findAll() {

        //findAll():查询所有结果
        List<User> uerAll = null;
        try {
            uerAll = db.findAll(User.class);

            List<String > list = new ArrayList<String>();
            for(int i=0;i<uerAll.size();i++){
                list.add(uerAll.get(i).toString());
            }
            adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list);
            lv1.setAdapter(adapter);
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

完整代码:

本人出现使用onclick方法无法使用的问题,所以用了OnClickListener 

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

import org.xutils.DbManager;
import org.xutils.common.util.KeyValue;
import org.xutils.db.sqlite.WhereBuilder;
import org.xutils.ex.DbException;
import org.xutils.x;

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

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private DbManager.DaoConfig daoConfig;
    private DbManager db;

    private Button btn_save,btn_delete,btn_up,btn_findById,btn_findAll;

    private ListView lv1;
    private  ArrayAdapter<String> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv1 = findViewById(R.id.lv1);
        btn_save = findViewById(R.id.btn_save);
        btn_delete = findViewById(R.id.btn_delete);
        btn_up = findViewById(R.id.btn_up);
        btn_findById = findViewById(R.id.btn_findById);
        btn_findAll = findViewById(R.id.btn_findAll);

        btn_save.setOnClickListener(this);
        btn_delete.setOnClickListener(this);
        btn_up.setOnClickListener(this);
        btn_findById.setOnClickListener(this);
        btn_findAll.setOnClickListener(this);

        createDb();

    }

    private void createDb() {
        daoConfig = new DbManager.DaoConfig()
                //默认在data/data/package name/database/下创建
                .setDbName("test.db")
                .setDbVersion(1)
                .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) {
                    }
                });

        db = x.getDb(daoConfig);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_save:
                System.out.println("save");
                save();
                break;
            case R.id.btn_delete:
                System.out.println("delete");
                delete(1);
                break;
            case R.id.btn_up:
                System.out.println("update");
                updateById(1);
                break;
            case R.id.btn_findById:
                System.out.println("findById");
                findeById(3);
                break;
            case R.id.btn_findAll:
                System.out.println("findAll");
                findAll();
                break;
        }
    }

    private void save() {
        try {
            User user = new User("wangwu","789456@qq.com");
            db.save(user);
            System.out.println("添加成功");
            findAll();
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    private void findAll() {

        //findAll():查询所有结果
        List<User> uerAll = null;
        try {
            uerAll = db.findAll(User.class);

            List<String > list = new ArrayList<String>();
            for(int i=0;i<uerAll.size();i++){
                list.add(uerAll.get(i).toString());
            }
            adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list);
            lv1.setAdapter(adapter);
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    public void updateById(int id){
        try {
            WhereBuilder b = WhereBuilder.b();
            b.and("id","=",id); //构造修改的条件
            KeyValue name = new KeyValue("name","lisi2");
            db.update(User.class,b,name);
            findAll();
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    public void delete(int id){
        try {
//            db.delete(User.class); //表中数据将被全部删除

            WhereBuilder b = WhereBuilder.b();
            b.and("id","=",2);
            db.delete(User.class, b);
            findAll();
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    public void findeById(int id){
        try {
            List<User> all = null;
            all = db.selector(User.class).where("id","=",id)
//                    .and("id",">",4)
                    .findAll();

            List<String > list = new ArrayList<String>();
            for(int i=0;i<all.size();i++){
                list.add(all.get(i).toString());
            }
            adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list);
            lv1.setAdapter(adapter);
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

}

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:padding="16dp">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_save"
        android:text="添加数据"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_delete"
        android:text="条件删除"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btn_save"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_up"
        android:text="更改数据"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btn_delete"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_findById"
        android:text="条件查询"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btn_up"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn_findAll"
        android:text="查询所有"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btn_findById"/>

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/lv1"
        android:text="查询所有"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btn_findAll"/>

</android.support.constraint.ConstraintLayout>

图片模块

详见https://blog.csdn.net/a_zhon/article/details/52864698

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值