首先導入依賴
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 + '\'' + '}'; } }希望對大家有所幫助