权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
导入:
implementation 'org.xutils:xutils:3.8.5'
核心代码:
package com.pad.untek.mes.mespda.xutils;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
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;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class XUtilsTestActivity extends BaseAcitvity {
@BindView(R.id.xwce_id)
XWClearEditText xwceId;
@BindView(R.id.xwce_username)
XWClearEditText xwceUsername;
@BindView(R.id.xwce_password)
XWClearEditText xwcePassword;
@BindView(R.id.xwce_age)
XWClearEditText xwceAge;
@BindView(R.id.xwce_sex)
XWClearEditText xwceSex;
@BindView(R.id.tv_add)
TextView tvAdd;
@BindView(R.id.tv_delete)
TextView tvDelete;
@BindView(R.id.tv_change)
TextView tvChange;
@BindView(R.id.tv_query)
TextView tvQuery;
@BindView(R.id.linlayout)
LinearLayout linlayout;
@BindView(R.id.rv_list)
RecyclerView rvList;
Context context;
XUtilsQueryDataAdapter adapter;
List<User> userList = new ArrayList<>();
int id;
String username;
String password;
int age;
String sex;
String selection = "";
String selectionArgs = "";
DbManager dbManager = null;
DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
.setDbName("user.db")
// 不设置dbDir时, 默认存储在app的私有目录
// .setDbDir(new File("/sdcard")) // "sdcard"的写法并非最佳实践
.setDbVersion(2)
.setDbOpenListener(new DbManager.DbOpenListener() {
@Override
public void onDbOpened(DbManager db) throws DbException {
db.getDatabase().enableWriteAheadLogging();
}
})
.setDbUpgradeListener(new DbManager.DbUpgradeListener() {
@Override
public void onUpgrade(DbManager db, int oldVersion, int newVersion) throws DbException {
}
});
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xutils_test);
ButterKnife.bind(this);
initView();
xUtilsSetting();
}
/**
* xUtils 配置
*/
private void xUtilsSetting() {
x.Ext.init(getApplication());
x.Ext.setDebug(BuildConfig.DEBUG);// 是否输出debug日志, 开启debug会影响性能.
x.view().inject(this);//没有用到view注解可以先不用
}
private void initView() {
context = this;
rvList.setLayoutManager(new LinearLayoutManager(this));
}
@OnClick({R.id.tv_add, R.id.tv_delete, R.id.tv_change, R.id.tv_query})
public void onClick(View view) {
switch (view.getId()) {
case R.id.tv_add:
if (isEmpty(1)) {
addData(id, username, password, age, sex);
queryData("", "");//添加后显示所有数据
}
break;
case R.id.tv_delete:
if (isEmpty(2)) {
deleteData(selection, selectionArgs);
queryData("", "");//删除后显示所有数据
}
break;
case R.id.tv_change:
if (isEmpty(3)) {
updateData(id);
queryData("", "");//修改后显示所有数据
}
break;
case R.id.tv_query:
if (isEmpty(4)) {
queryData(selection, selectionArgs);
}
break;
}
}
/**
* 显示数据
*
* @param userList 数据集合
*/
private void showData(List<User> userList) {
if (userList.size() == 0) {
toastSpek("没有数据!");
return;
}
if (adapter == null) {
rvList.setAdapter(new XUtilsQueryDataAdapter(context, userList));
} else {
adapter.updateDataList(userList);
}
}
/**
* 条件查询(为空则查询所有数据)
*
* @param selection 条件
* @param selectionArgs 条件值
*/
private void queryData(String selection, String selectionArgs) {
if (userList.size() > 0) {
userList.clear();
rvList.removeAllViews();
}
try {
dbManager = x.getDb(daoConfig);
if (selection.isEmpty()) {
userList = dbManager.selector(User.class).findAll();
} else {
userList = dbManager.selector(User.class).orderBy("id", true)
.where(selection, "=", selectionArgs).limit(1000).findAll();
}
showData(userList);
} catch (DbException e) {
e.printStackTrace();
}
}
/**
* 修改数据
*
* @param id id是唯一键,不可修改,其他属性根据id来修改
*/
private void updateData(int id) {
String selection = "id";
String selectionUsername = "username";
String selectionPassword = "password";
String selectionAge = "age";
String selectionSex = "sex";
try {
dbManager = x.getDb(daoConfig);
if (!username.isEmpty()) {
dbManager.update(User.class, WhereBuilder.b(selection, "=", id), new KeyValue(selectionUsername, username));
}
if (!password.isEmpty()) {
dbManager.update(User.class, WhereBuilder.b(selection, "=", id), new KeyValue(selectionPassword, password));
}
if (!xwceAge.getText().toString().trim().isEmpty()) {
dbManager.update(User.class, WhereBuilder.b(selection, "=", id), new KeyValue(selectionAge, age));
}
if (!sex.isEmpty()) {
dbManager.update(User.class, WhereBuilder.b(selection, "=", id), new KeyValue(selectionSex, sex));
}
toastSpek("修改成功!");
} catch (DbException e) {
e.printStackTrace();
}
}
/**
* 删除数据
*
* @param selection 条件
* @param selectionArgs 条件值
*/
private void deleteData(String selection, String selectionArgs) {
try {
dbManager = x.getDb(daoConfig);
dbManager.delete(User.class, WhereBuilder.b(selection, "=", selectionArgs));
toastSpek("删除成功!");
} catch (DbException e) {
e.printStackTrace();
return;
}
}
private void addData(int id, String username, String password, int age, String sex) {
try {
dbManager = x.getDb(daoConfig);
User user = new User();
user.id = id;
user.username = username;
user.password = password;
user.age = age;
user.sex = sex;
dbManager.save(user);
toastSpek("添加成功!");
} catch (DbException e) {
e.printStackTrace();
return;
}
}
/**
* 非空判断
*
* @param type
* @return
*/
private boolean isEmpty(int type) {
clearSaveContents();
username = xwceUsername.getText().toString().trim();
password = xwcePassword.getText().toString().trim();
sex = xwceSex.getText().toString().trim();
if (!xwceAge.getText().toString().trim().isEmpty()) {
age = Integer.parseInt(xwceAge.getText().toString().trim());
}
if (!xwceId.getText().toString().trim().isEmpty()) {
id = Integer.parseInt(xwceId.getText().toString().trim());
}
if (type == 1) {//增加数据,资料必须填写完整
if (username.isEmpty() || password.isEmpty() || xwceAge.getText().toString().trim().isEmpty() || sex.isEmpty()) {
toastSpek("请把资料填写完整!");
return false;
}
}
if (type == 2) {//删除数据,可以根据任何项删除数据
if (!sex.isEmpty()) {
selection = "sex";
selectionArgs = sex;
return true;
}
if (!xwceAge.getText().toString().trim().isEmpty()) {
selection = "age";
selectionArgs = xwceAge.getText().toString().trim();
return true;
}
if (!password.isEmpty()) {
selection = "password";
selectionArgs = password;
return true;
}
if (!username.isEmpty()) {
selection = "username";
selectionArgs = username;
return true;
}
if (!xwceId.getText().toString().trim().isEmpty()) {
selection = "id";
selectionArgs = xwceId.getText().toString().trim();
return true;
}
toastSpek("请填写删除条件!");
return false;
}
if (type == 3) {//修改数据,必须根据id修改,id是唯一键
if (xwceId.getText().toString().trim().isEmpty()) {
toastSpek("请填写ID!");
return false;
}
}
if (type == 4) {//查询数据,可以根据任何项查询数据
if (!sex.isEmpty()) {
selection = "sex";
selectionArgs = sex;
return true;
}
if (!xwceAge.getText().toString().trim().isEmpty()) {
selection = "age";
selectionArgs = sex;
return true;
}
if (!password.isEmpty()) {
selection = "password";
selectionArgs = password;
return true;
}
if (!username.isEmpty()) {
selection = "username";
selectionArgs = username;
return true;
}
if (!xwceId.getText().toString().trim().isEmpty()) {
selection = "id";
selectionArgs = xwceId.getText().toString().trim();
return true;
}
}
return true;
}
/**
* 清除保存的内容
*/
private void clearSaveContents() {
username = "";
password = "";
age = -1;
sex = "";
selection = "";
selectionArgs = "";
}
/**
* Toast 提示
*
* @param s 提示内容
*/
private void toastSpek(String s) {
Toast.makeText(context, s, Toast.LENGTH_LONG).show();
}
}
完整项目可以到这里下载:
https://download.youkuaiyun.com/download/Jeyden_827/12695357