最近,我在进行有关手机平台的应用开发。在项目开发过程中,可谓是吃尽了苦头,临近崩溃。由于是才接触这门技术的小白,很多地方都是初次接触,操作起来显得特别困难,所以在这个过程中遇到了许许多多的问题,让我甚是苦恼。于是我花费了大把的时间和精力上网各种逛论坛刷博客查阅资料,总算,功夫不负有心人,问题差不多都解决了,自己也感觉在这门技术领域初步入门了。目前项目的开发也变得顺畅了些,虽然不是完全没问题,但相比之前,已经好了很多了。对于这些收获,我是很高兴的。在这个过程中,自己结合自己项目的具体要求,通过上网查阅一些相关的资料,发现了一些非常实用好用通用的设计模式,掌握了感觉收获颇多,现在我就把这些东西分享给你们,希望对那些和我同样处于技术开发临近崩溃边缘的同学一些帮助,希望能帮你重拾信心。
话不多说,进入正题!
技术一:在Android Studio中实现对SQLite数据库的增删改查
增删改查”,相信懂的都懂。现实中很多APP网站之类的应用中有关信息处理的部分,虽然“外表看起来很光鲜”,但深究其内部的原理,不外乎都是对数据库中相关表的增删改查,所以这部分显得尤为重要。相信只要是长期进行项目开发的同学,不管是Web应用开发还是移动手机平台应用开发,都遇到过。在我这次手机平台应用开发项目中,我也遇到了,最后也是经历了一大番挣扎后,终于勉强解决。所以,我觉得这部分很有必要总结分享一下!
先来认识一下SQLite数据库:
SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。(来自官方解释)简而言之,SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统。它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。相比Mysql、SQL Server这些世界著名数据库管理系统来讲,它的处理速度比他们都快。所以在进行手机平台应用开发的过程中,大部分人都会选择它来作为数据存储的工具。现在Android Studio中也自带了有关它的包和工具,所以使用起来也是很方便,毕竟不用像过去一样,要花一大把时间和精力考虑Android Studio与MySQL、SQL Server等的连接,在这个过程中要下载各种包,进行各种配置,一不小心就会出现各种问题。
下面进入正题,谈一谈Android Studio中实现对SQLite简单的增删改查。
以我自己的项目为例:
我新建了一个类Earth(土地信息类),要做的就是实现对数据库中有关土地信息的表earth的增删改查。代码如下:
//Earth.java package com.example.farmer;

public class Earth {
 private String Eno; //土地标号
 private String diwei; //地位
 private String dikuai; //地块
 private String dibiao; //地标
 private String diqu; //地区
 private String area; //种植面积
 private String zhuangtai;//状态
public Earth(String Eno, String diwei,String dikuai,String dibiao,String diqu,String area,String zhuangtai) {
    this.Eno = Eno;
    this.diwei = diwei;
    this.dikuai = dikuai;
    this.dibiao = dibiao;
    this.diqu = diqu;
    this.area = area;
    this.zhuangtai = zhuangtai;
}
public String getEno() {
    return Eno;
}
public void setEno(String Eno) {
    this.Eno = Eno;
}
public String getdiwei() {
    return diwei;
}
public void setdiwei(String diwei) {
    this.diwei = diwei;
}
public String getdikuai() {
    return dikuai;
}
public void setdikuai(String dikuai) {
    this.dikuai = dikuai;
}
public String getdibiao() {
    return dibiao;
}
public void setdibiao(String dibiao) {
    this.dibiao = dibiao;
}
public String getdiqu() {
    return diqu;
}
public void setdiqu(String diqu) {
    this.diqu = diqu;
}
public String getarea() {
    return area;
}
public void setarea(String area) {
    this.area = area;
}
public String getzhuangtai() {
    return zhuangtai;
}
public void setzhuangtai(String zhuangtai) {
    this.zhuangtai = zhuangtai;
}
@Override
public String toString() {
    return "土地信息{" +
            "土地标号:'" + Eno + '\'' +
            ", 土地地位:'" + diwei + '\'' +
            ", 土地地块:'" + dikuai + '\'' +
            ", 土地地标:'" + dibiao + '\'' +
            ", 土地地区:'" + diqu + '\'' +
            ", 土地面积:'" + area + '\'' +
            ", 土地状态(负责人):'" + zhuangtai + '\'' +
            '}';
}

}
这部分要重点注意toString()函数的编写,如果格式不对的话后面是实现不了这些功能的,我就在这里犯过很多错误,反思良久,请大家注意!
接下来就是要建立与数据库的连接
我这里新建了一个DBOpenHelper,java专门用来进行数据库的创建表的创建以及增删改查等工作
//DBOpenHelper.java package com.example.farmer;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
/**

  • Created by littlecurl 2018/6/24
    */

public class DBOpenHelper extends SQLiteOpenHelper {
/**
* 声明一个AndroidSDK自带的数据库变量db
*/
private SQLiteDatabase db;

/**
 * 写一个这个类的构造函数,参数为上下文context,所谓上下文就是这个类所在包的路径
 * 指明上下文,数据库名,工厂默认空值,版本号默认从1开始
 * super(context,"db_test",null,1);
 * 把数据库设置成可写入状态,除非内存已满,那时候会自动设置为只读模式
 * 不过,以现如今的内存容量,估计一辈子也见不到几次内存占满的状态
 * db = getReadableDatabase();
 */
public DBOpenHelper(Context context){
    super(context,"db_test",null,1);
    db = getReadableDatabase();
}

/**
 * 重写两个必须要重写的方法,因为class DBOpenHelper extends SQLiteOpenHelper
 * 而这两个方法是 abstract 类 SQLiteOpenHelper 中声明的 abstract 方法
 * 所以必须在子类 DBOpenHelper 中重写 abstract 方法
 * 想想也是,为啥规定这么死必须重写?
 * 因为,一个数据库表,首先是要被创建的,然后免不了是要进行增删改操作的
 * 所以就有onCreate()、onUpgrade()两个方法
 * @param db
 */
@Override
public void onCreate(SQLiteDatabase db){
    db.execSQL("CREATE TABLE IF NOT EXISTS user(" +
            "_id INTEGER PRIMARY KEY AUTOINCREMENT," +
            "name TEXT," +
            "password TEXT,"+
            "kind TEXT)");
    db.execSQL("CREATE TABLE IF NOT EXISTS earth(" +
            "Eno INTEGER PRIMARY KEY AUTOINCREMENT," +
            "diwei TEXT," +
            "dikuai TEXT,"+
            "dibiao TEXT,"+
            "diqu TEXT,"+
            "area TEXT,"+
            "zhuangtai TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
    db.execSQL("DROP TABLE IF EXISTS user");
    db.execSQL("DROP TABLE IF EXISTS earth");
    onCreate(db);
}

public void add(String name,String password,String kind){
    db.execSQL("INSERT INTO user (name,password,kind) VALUES(?,?,?)",new Object[]{name,password,kind});
}
public void add1(String Eno, String diwei,String dikuai,String dibiao,String diqu,String area,String zhuangtai){
    db.execSQL("INSERT INTO earth (Eno, diwei,dikuai,dibiao,diqu,area,zhuangtai) VALUES(?,?,?,?,?,?,?)",new Object[]{Eno, diwei,dikuai,dibiao,diqu,area,zhuangtai});
}
public void delete(String name,String password){
    db.execSQL("DELETE FROM user WHERE name = AND password ="+name+password);
}
public void delete1(String Eno){
    db.execSQL("DELETE FROM earth WHERE Eno = "+Eno);
}
public void update(String password){
    db.execSQL("UPDATE user SET password = ?",new Object[]{password});
}
public void update1(String Eno, String diwei,String dikuai,String dibiao,String diqu,String area,String zhuangtai){
    db.execSQL("UPDATE earth SET area=?,zhuangtai=? WHERE Eno=? AND diwei=? AND dikuai=? AND dibiao=? AND diqu=?",new Object[]{area,zhuangtai,Eno,diwei,dikuai,dibiao,diqu});
}
public void select1(){
    db.execSQL("SELECT * FROM earth");
}

public ArrayList<User> getAllData(){

    ArrayList<User> list = new ArrayList<User>();
    Cursor cursor = db.query("user",null,null,null,null,null,"name DESC");
    while(cursor.moveToNext()){
        String name = cursor.getString(cursor.getColumnIndex("name"));
        String password = cursor.getString(cursor.getColumnIndex("password"));
        String kind = cursor.getString(cursor.getColumnIndex("kind"));
        list.add(new User(name,password,kind));
    }
    return list;
}
public ArrayList<Earth> getAllData1(){

    ArrayList<Earth> list1 = new ArrayList<Earth>();
    Cursor cursor = db.query("earth",null,null,null,null,null,"name DESC");
    while(cursor.moveToNext()){
        String Eno = cursor.getString(cursor.getColumnIndex("Eno"));
        String diwei = cursor.getString(cursor.getColumnIndex("diwei"));
        String dikuai = cursor.getString(cursor.getColumnIndex("dikuai"));
        String dibiao = cursor.getString(cursor.getColumnIndex("dibiao"));
        String diqu = cursor.getString(cursor.getColumnIndex("diqu"));
        String area = cursor.getString(cursor.getColumnIndex("area"));
        String zhuangtai = cursor.getString(cursor.getColumnIndex("zhuangtai"));
        list1.add(new Earth(Eno, diwei,dikuai,dibiao,diqu,area,zhuangtai));
    }
    return list1;
}

}
这里面就定义了我后面需要用到的几个函数(代码中写到的函数并不全部 都会用,这里我只截取了部分代码),增:add1, 删:delete1, 改:update1, 查:select
好了,接下来就是分块实现增删改查的工作了。由于代码较多,大部分看起来都比较浅显易懂,我就不一一解释了,直接上代码。
增:
//activity_earth_add

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    android:id="@+id/rl_registeractivity_top"
    android:layout_width="match_parent"
    android:layout_height="70dp"
    android:background="@color/color_minefragment_top"
    >
    <ImageView
        android:id="@+id/iv_registeractivity_back"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:background="@drawable/ic_left_back"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:clickable="true"
        android:onClick="onClick"
        />

    <TextView
        android:id="@+id/tv_registeractivity_register"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="土地管理——创建新土地"
        android:textColor="#fff"
        android:textSize="20dp"
        android:layout_toRightOf="@+id/iv_registeractivity_back"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dp"
        />
</RelativeLayout>

<LinearLayout
    android:id="@+id/ll_registeractivity_body"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_below="@+id/rl_registeractivity_top"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_Eno"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地标号:"/>
        <EditText
            android:id="@+id/et_registeractivity_Eno"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入土地标号"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_diwei"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地地位:"/>
        <EditText
            android:id="@+id/et_registeractivity_diwei"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入土地地位"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_dikuai"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地地块:"/>
        <EditText
            android:id="@+id/et_registeractivity_dikuai"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入土地地块"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_dibiao"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地地标:"/>
        <EditText
            android:id="@+id/et_registeractivity_dibiao"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入土地地标"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_diqu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地地区:"/>
        <EditText
            android:id="@+id/et_registeractivity_diqu"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入土地地区"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_area"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地面积:"/>
        <EditText
            android:id="@+id/et_registeractivity_area"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入土地面积"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_zhuangtai"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地状态(负责人):"/>
        <EditText
            android:id="@+id/et_registeractivity_zhuangtai"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入土地状态(负责人)"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    <!-- 注册按钮 -->
    <Button
        android:id="@+id/bt_registeractivity_register"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginLeft="5dp"
        android:background="@drawable/selector_loginactivity_button"
        android:textColor="#fff"
        android:text="新建"
        android:onClick="onClick"
        android:layout_marginTop="40dp"
        />

</LinearLayout>

//EarthAddActicity
package com.example.farmer;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class EarthAddActivity extends AppCompatActivity{

private DBOpenHelper mDBOpenHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_earth_add);
    ButterKnife.bind(this);
    mDBOpenHelper = new DBOpenHelper(this);

}

@BindView(R.id.rl_registeractivity_top)
RelativeLayout mRlRegisteractivityTop;
@BindView(R.id.iv_registeractivity_back)
ImageView mIvRegisteractivityBack;
@BindView(R.id.ll_registeractivity_body)
LinearLayout mLlRegisteractivityBody;
@BindView(R.id.et_registeractivity_Eno)
EditText mEtRegisteractivityEno;
@BindView(R.id.et_registeractivity_diwei)
EditText mEtRegisteractivitydiwei;
@BindView(R.id.et_registeractivity_dikuai)
EditText mEtRegisteractivitydikuai;
@BindView(R.id.et_registeractivity_dibiao)
EditText mEtRegisteractivitydibiao;
@BindView(R.id.et_registeractivity_diqu)
EditText mEtRegisteractivitydiqu;
@BindView(R.id.et_registeractivity_area)
EditText mEtRegisteractivityarea;
@BindView(R.id.et_registeractivity_zhuangtai)
EditText mEtRegisteractivityzhuangtai;


@OnClick({
        R.id.iv_registeractivity_back,
        R.id.bt_registeractivity_register
})
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.iv_registeractivity_back:
            Intent intent1 = new Intent(this, MainActivity.class);
            startActivity(intent1);
            finish();
            break;
        case R.id.bt_registeractivity_register:
            String Eno = mEtRegisteractivityEno.getText().toString().trim();
            String diwei = mEtRegisteractivitydiwei.getText().toString().trim();
            String dikuai = mEtRegisteractivitydikuai.getText().toString().trim();
            String dibiao = mEtRegisteractivitydibiao.getText().toString().trim();
            String diqu = mEtRegisteractivitydiqu.getText().toString().trim();
            String area = mEtRegisteractivityarea.getText().toString().trim();
            String zhuangtai = mEtRegisteractivityzhuangtai.getText().toString().trim();
            if (!TextUtils.isEmpty(Eno) && !TextUtils.isEmpty(diwei) && !TextUtils.isEmpty(dikuai)&& !TextUtils.isEmpty(dibiao)&& !TextUtils.isEmpty(diqu)&& !TextUtils.isEmpty(area)&& !TextUtils.isEmpty(zhuangtai) ) {
                    //将土地信息加入到数据库中
                    mDBOpenHelper.add1(Eno, diwei,dikuai,dibiao,diqu,area,zhuangtai);
                    Intent intent2 = new Intent(this, MainActivity.class);
                    startActivity(intent2);
                    finish();
                    Toast.makeText(this,  "新建土地成功", Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(this, "新建土地失败", Toast.LENGTH_SHORT).show();
            }
            break;
    }
}

}


//activity_earth_delete

<?xml version="1.0" encoding="utf-8"?>












//EarthDeleteActivity
package com.example.farmer;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class EarthDeleteActivity extends AppCompatActivity {
private DBOpenHelper mDBOpenHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_earth_delete);
    ButterKnife.bind(this);
    mDBOpenHelper = new DBOpenHelper(this);
}

@BindView(R.id.rl_registeractivity_top)
RelativeLayout mRlRegisteractivityTop;
@BindView(R.id.iv_registeractivity_back)
ImageView mIvRegisteractivityBack;
@BindView(R.id.ll_registeractivity_body)
LinearLayout mLlRegisteractivityBody;
@BindView(R.id.et_registeractivity_Eno)
EditText mEtRegisteractivityEno;

@OnClick({
        R.id.iv_registeractivity_back,
        R.id.bt_registeractivity_register
})
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.iv_registeractivity_back:
            Intent intent1 = new Intent(this, MainActivity.class);
            startActivity(intent1);
            finish();
            break;
        case R.id.bt_registeractivity_register:
            String Eno = mEtRegisteractivityEno.getText().toString().trim();
            if (!TextUtils.isEmpty(Eno) ) {
                //从数据库中删除原有土地信息
                mDBOpenHelper.delete1(Eno);
                Intent intent2 = new Intent(this, MainActivity.class);
                startActivity(intent2);
                finish();
                Toast.makeText(this,  "删除原有土地成功", Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(this, "删除原有土地失败", Toast.LENGTH_SHORT).show();
            }
            break;
    }
}

}
改:
//activity_earth_update

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    android:id="@+id/rl_registeractivity_top"
    android:layout_width="match_parent"
    android:layout_height="70dp"
    android:background="@color/color_minefragment_top"
    >
    <ImageView
        android:id="@+id/iv_registeractivity_back"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:background="@drawable/ic_left_back"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:clickable="true"
        android:onClick="onClick"
        />

    <TextView
        android:id="@+id/tv_registeractivity_register"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="土地管理——修改土地信息"
        android:textColor="#fff"
        android:textSize="20dp"
        android:layout_toRightOf="@+id/iv_registeractivity_back"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dp"
        />
</RelativeLayout>

<LinearLayout
    android:id="@+id/ll_registeractivity_body"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_below="@+id/rl_registeractivity_top"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_Eno"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地标号:"/>
        <EditText
            android:id="@+id/et_registeractivity_Eno"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入要修改土地的土地标号"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_diwei"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地地位:"/>
        <EditText
            android:id="@+id/et_registeractivity_diwei"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入要修改土地的土地地位"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_dikuai"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地地块:"/>
        <EditText
            android:id="@+id/et_registeractivity_dikuai"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入要修改土地的土地地块"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_dibiao"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地地标:"/>
        <EditText
            android:id="@+id/et_registeractivity_dibiao"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入要修改土地的土地地标"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_diqu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地地区:"/>
        <EditText
            android:id="@+id/et_registeractivity_diqu"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入要修改土地的土地地区"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_area"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地面积:"/>
        <EditText
            android:id="@+id/et_registeractivity_area"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入修改后新的土地面积"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv_registeractivity_zhuangtai"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="土地状态(负责人):"/>
        <EditText
            android:id="@+id/et_registeractivity_zhuangtai"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请输入新的土地状态"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            />
    </LinearLayout>
    <Button
        android:id="@+id/bt_registeractivity_register"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginLeft="5dp"
        android:background="@drawable/selector_loginactivity_button"
        android:textColor="#fff"
        android:text="修改"
        android:onClick="onClick"
        android:layout_marginTop="40dp"
        />

</LinearLayout>

//EarthUpdateActivity.java package com.example.farmer;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class EarthUpdateActivity extends AppCompatActivity{

private DBOpenHelper mDBOpenHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_earth_update);
    ButterKnife.bind(this);
    mDBOpenHelper = new DBOpenHelper(this);

}

@BindView(R.id.rl_registeractivity_top)
RelativeLayout mRlRegisteractivityTop;
@BindView(R.id.iv_registeractivity_back)
ImageView mIvRegisteractivityBack;
@BindView(R.id.ll_registeractivity_body)
LinearLayout mLlRegisteractivityBody;
@BindView(R.id.et_registeractivity_Eno)
EditText mEtRegisteractivityEno;
@BindView(R.id.et_registeractivity_diwei)
EditText mEtRegisteractivitydiwei;
@BindView(R.id.et_registeractivity_dikuai)
EditText mEtRegisteractivitydikuai;
@BindView(R.id.et_registeractivity_dibiao)
EditText mEtRegisteractivitydibiao;
@BindView(R.id.et_registeractivity_diqu)
EditText mEtRegisteractivitydiqu;
@BindView(R.id.et_registeractivity_area)
EditText mEtRegisteractivityarea;
@BindView(R.id.et_registeractivity_zhuangtai)
EditText mEtRegisteractivityzhuangtai;


@OnClick({
        R.id.iv_registeractivity_back,
        R.id.bt_registeractivity_register
})
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.iv_registeractivity_back:
            Intent intent1 = new Intent(this, MainActivity.class);
            startActivity(intent1);
            finish();
            break;
        case R.id.bt_registeractivity_register:
            String Eno = mEtRegisteractivityEno.getText().toString().trim();
            String diwei = mEtRegisteractivitydiwei.getText().toString().trim();
            String dikuai = mEtRegisteractivitydikuai.getText().toString().trim();
            String dibiao = mEtRegisteractivitydibiao.getText().toString().trim();
            String diqu = mEtRegisteractivitydiqu.getText().toString().trim();
            String area = mEtRegisteractivityarea.getText().toString().trim();
            String zhuangtai = mEtRegisteractivityzhuangtai.getText().toString().trim();
            if (!TextUtils.isEmpty(Eno) && !TextUtils.isEmpty(diwei) && !TextUtils.isEmpty(dikuai)&& !TextUtils.isEmpty(dibiao)&& !TextUtils.isEmpty(diqu)&& !TextUtils.isEmpty(area)&& !TextUtils.isEmpty(zhuangtai) ) {
                //对数据库中的土地信息进行修改
                mDBOpenHelper.update1(Eno, diwei,dikuai,dibiao,diqu,area,zhuangtai);
                Intent intent2 = new Intent(this, MainActivity.class);
                startActivity(intent2);
                finish();
                Toast.makeText(this,  "修改土地信息成功", Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(this, "修改土地信息失败", Toast.LENGTH_SHORT).show();
            }
            break;
    }
}

}
查:(这里没有设置查询条件,有要求的可以自己加在后面)
//activity_earth_show
ScrollView xmlns:android=“http://schemas.android.com/apk/res/android
xmlns:tools=“http://schemas.android.com/tools
android:layout_width=“match_parent”
android:layout_height=“match_parent” >

<LinearLayout
    android:id="@+id/ll"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".EarthShowActivity" >
</LinearLayout>

//EarthShowActivity package com.example.farmer;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

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

public class EarthShowActivity extends AppCompatActivity {
List mEarthList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_earth_show);
mEarthList=new ArrayList();

//从数据库里面把数据取出来
    DBOpenHelper oh = new DBOpenHelper(this);
    SQLiteDatabase db = oh.getWritableDatabase();

    Cursor cursor = db.query("earth", null, null, null, null, null, null);
    while (cursor.moveToNext()) {
        String Eno = cursor.getString(cursor.getColumnIndex("Eno"));
        String diwei = cursor.getString(cursor.getColumnIndex("diwei"));
        String dikuai = cursor.getString(cursor.getColumnIndex("dikuai"));
        String dibiao = cursor.getString(cursor.getColumnIndex("dibiao"));
        String diqu = cursor.getString(cursor.getColumnIndex("diqu"));
        String area = cursor.getString(cursor.getColumnIndex("area"));
        String zhuangtai = cursor.getString(cursor.getColumnIndex("zhuangtai"));
        Earth p=new Earth(Eno, diwei,dikuai,dibiao,diqu,area,zhuangtai);

        mEarthList.add(p);
    }
    LinearLayout ll=(LinearLayout) findViewById(R.id.ll);
    for(Earth p:mEarthList)
    {
        //1.集合中每有一条数据,就new一个TextView
        TextView tv=new TextView(this);
        //2.把人物的信息设置为文本的内容
        tv.setText(p.toString());
        tv.setTextSize(18);
        //3.把TextView设置成线性布局的子节点
        ll.addView(tv);
    }
}

}

好了,这部分的介绍就到这里了。下面摆几张效果图:

增:

Android软件开发Log实时查看方式 android软件开发报告_微型技术报告


删:

Android软件开发Log实时查看方式 android软件开发报告_SQL_02


改:

Android软件开发Log实时查看方式 android软件开发报告_数据库_03


查:

Android软件开发Log实时查看方式 android软件开发报告_SQL_04

技术二:在Android Studio中使用下拉标签,点击标签中不同项响应不同的事件,跳转到不同的页面处理事件
这是我在进行项目开发过程中,在设计一个app的主页面时,由于不知道从何入手,在网上查阅了各种资料,最后选定了用下拉标签这种方式来做。制作下拉标签主要有两种方式,这里我选的是其中一种,运用Spinner标签,指定一个入口,然后在资源文件中指定具体的下拉标签项,代码如下:

<Spinner
        android:id="@+id/td"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/ctype1"></Spinner>

//strings.xml
创建新土地
删除原有土地
修改土地信息
查看土地信息

这些就是主界面代码的主要内容了,下面进入后台代码的设计,主要满足点击选择不同的项后,点击OK按钮会跳转到不同的界面进行事务处理,代码如下:
package com.example.farmer;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;

import android.widget.Button;
import android.widget.Spinner;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**

  • Created by littlecurl 2018/6/24
    */
    public class MainActivity extends AppCompatActivity {
    private Spinner sp_choose;
    private Button bt_ok;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sp_choose = (Spinner) findViewById(R.id.td);
    bt_ok = (Button) findViewById(R.id.bt_ok);
    ArrayAdapter adapter = ArrayAdapter.createFromResource(
    this, R.array.ctype1, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    sp_choose.setAdapter(adapter);
    /**
    * 一定 一定 一定记得加这句,而且是固定位置,在setContentView()之下
    * 否则无论写的什么逻辑 都不会在Activity中起作用
    */
    ButterKnife.bind(this);
    }
    @BindView(R.id.bt_main_logout)
    Button mBtMainLogout;
    @BindView(R.id.bt_ok)
    Button mBtOK;
    @OnClick({
    R.id.bt_main_logout,
    R.id.bt_ok
    })
    public void onClick(View view) {
    Intent intent1=new Intent();
    switch (view.getId()) {
    case R.id.bt_main_logout:
    Intent intent = new Intent(this, LoginActivity.class);
    startActivity(intent);
    finish();
    break;
    case R.id.bt_ok:
    switch (sp_choose.getSelectedItemPosition()) {
    case 0:
    intent1.setClass(MainActivity.this, EarthAddActivity.class);
    startActivity(intent1);
    break;
    case 1:
    intent1.setClass(MainActivity.this, EarthDeleteActivity.class);
    startActivity(intent1);
    break;
    case 2:
    intent1.setClass(MainActivity.this, EarthUpdateActivity.class);
    startActivity(intent1);
    break;
    case 3:
    intent1.setClass(MainActivity.this, EarthShowActivity.class);
    startActivity(intent1);
    break;
    }
}

}

}

好了,代码部分就完成了,接下来给大家看看效果图:

Android软件开发Log实时查看方式 android软件开发报告_android_05


点击“执行功能”按钮后就会跳转到不同的界面,具体的每个界面效果图在上面已经给出来了

好了!这次的总结分享就到这里了,希望对大家能有一些帮助,希望大家都能变成一个IT技术大佬!!!