最近,我在进行有关手机平台的应用开发。在项目开发过程中,可谓是吃尽了苦头,临近崩溃。由于是才接触这门技术的小白,很多地方都是初次接触,操作起来显得特别困难,所以在这个过程中遇到了许许多多的问题,让我甚是苦恼。于是我花费了大把的时间和精力上网各种逛论坛刷博客查阅资料,总算,功夫不负有心人,问题差不多都解决了,自己也感觉在这门技术领域初步入门了。目前项目的开发也变得顺畅了些,虽然不是完全没问题,但相比之前,已经好了很多了。对于这些收获,我是很高兴的。在这个过程中,自己结合自己项目的具体要求,通过上网查阅一些相关的资料,发现了一些非常实用好用通用的设计模式,掌握了感觉收获颇多,现在我就把这些东西分享给你们,希望对那些和我同样处于技术开发临近崩溃边缘的同学一些帮助,希望能帮你重拾信心。
话不多说,进入正题!
技术一:在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"?>

<RelativeLayoutandroid:id="@+id/rl_registeractivity_top"android:layout_width="match_parent"android:layout_height="70dp"android:background="@color/color_minefragment_top"><ImageViewandroid: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"/><TextViewandroid: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><LinearLayoutandroid: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"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_Eno"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地标号:"/><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_diwei"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地地位:"/><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_dikuai"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地地块:"/><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_dibiao"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地地标:"/><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_diqu"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地地区:"/><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_area"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地面积:"/><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_zhuangtai"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地状态(负责人):"/><EditTextandroid: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><!-- 注册按钮 --><Buttonandroid: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"?>

<RelativeLayoutandroid:id="@+id/rl_registeractivity_top"android:layout_width="match_parent"android:layout_height="70dp"android:background="@color/color_minefragment_top"><ImageViewandroid: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"/><TextViewandroid: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><LinearLayoutandroid: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"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_Eno"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地标号:"/><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_diwei"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地地位:"/><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_dikuai"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地地块:"/><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_dibiao"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地地标:"/><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_diqu"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地地区:"/><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_area"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地面积:"/><EditTextandroid: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><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_registeractivity_zhuangtai"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="土地状态(负责人):"/><EditTextandroid: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><Buttonandroid: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” >

<LinearLayoutandroid: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一个TextViewTextView tv=new TextView(this);//2.把人物的信息设置为文本的内容tv.setText(p.toString());tv.setTextSize(18);//3.把TextView设置成线性布局的子节点ll.addView(tv);}
}

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

删:

改:
查:

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

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

     }
    

    }

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

点击“执行功能”按钮后就会跳转到不同的界面,具体的每个界面效果图在上面已经给出来了
好了!这次的总结分享就到这里了,希望对大家能有一些帮助,希望大家都能变成一个IT技术大佬!!!

相关CSDN参考博客:
https://blog.csdn.net/zyx520ytt/article/details/51346886
https://blog.csdn.net/mr_tank_/article/details/8840038
https://blog.csdn.net/midnight_time/article/details/80792255

[Android Studio]微型技术报告-手机平台应用开发相关推荐

  1. 手机平台应用开发微型技术报告2

    本次微型技术报告主要针对移动开发技术中的数据存储.组件通信以及服务广播和通知.整理干货如下: 关于数据存储,了解了了解Android系统中有哪些数据存储的方式:熟悉并掌握Preferences的操作: ...

  2. android studio运行APP到手机

    android studio运行APP到手机 一.数据线连接手机调试 1.打开android手机的开发者模式(机型不一样,打开方式不一样,具体可百度) 2.用数据线把电脑和手机连起来(最好用原装数据线 ...

  3. Android让APP运行在新环境上,Android Studio环境在真手机运行app项目教程

    对于Android Studio环境在真手机运行app项目的相关操作有许多网友咨询过,小编今天就分享Android Studio环境在真手机运行app项目的详细步骤,一起好好学习下吧! 要想将Andr ...

  4. android 查看文件系统的格式,Android studio 3.0 查看手机文件系统的方法(超简单)

    众所周知,我们要查看安卓手机中文件系统前提条件是要root手机,然后去DDMS里面去看,但是现在很多手机都不好root,替代的方法是用电脑模拟器,不管怎么样,都挺麻烦的,最近更新Android stu ...

  5. Android Studio无线Wifi调试手机的两种方案

    Android Studio无线Wifi调试手机的两种方案 第一种方式 使用adbWireless连接 第二种方式 使用插件Android Wifi ADB连接 总结 第一种方式 使用adbWirel ...

  6. Android Studio 使用 WIFI 连接手机

    Android Studio 使用 WIFI 连接手机 手机连线经常接触不良, 连上又断又连上又断的时候, 只要确保有一点时间让你连上 adb wifi, 就不用再听到那烦人的声音. 注意手机跟电脑必 ...

  7. android studio绘制统计图,基于Android Studio的饼图账单的设计与开发_毕业论文.doc

    基于Android Studio的饼图账单的设计与开发_毕业论文 Anhui Vocactional & Technical College of Industry & Trade 毕 ...

  8. Android NDK开发之旅(2):一篇文章搞定Android Studio中使用CMake进行NDK/JNI开发

    Android NDK开发之旅(2):一篇文章搞定android Studio中使用CMake进行NDK/JNI开发 (码字不易,转载请声明出处:http://blog.csdn.NET/andrex ...

  9. 物联网APP:使用android studio实现阿里云物联网平台数字签名(Signature)(附源代码)

    摘要:本文讲解如何在安卓移动端实现阿里云物联网平台数字签名,使用的是android studio编写apk的方式进行,win7 x64系统下实现,文中提供了如何配置android studio的国内镜 ...

最新文章

  1. 神经正切核,深度学习理论研究的最新热点?
  2. java redis 主从配置_Redis实现主从复制(MasterSlave)
  3. 树莓派:和电脑之间的串口编程,以及树莓派的备份
  4. 机器学习模型 知乎_机器学习中有哪些模型?
  5. 实践 config drive - 每天5分钟玩转 OpenStack(170)
  6. SAP供应商编码范围
  7. Android 首页图片轮播
  8. 【Tools】Modbus Slave 7安装详解
  9. 记录工作中常用的CSS3
  10. 2013蓝桥杯java试题_蓝桥杯2013决赛java本科b组试题.doc
  11. powerShell中 diff的使用
  12. 调研报告|在线语音识别改进之 RNN-T 训练
  13. solr6.6 导入索引数据
  14. Oracle中UNION和ORDER BY共用方法
  15. 切片与MapTask并行度决定机制
  16. es if语法 script_Elasticsear7.x DSL语法之文档管理
  17. Excel的数据导入到PB的DW中
  18. 推荐参考文献元数据挖掘的几篇论文
  19. ussd代码大全_如何运行USSD代码
  20. 设计模式之访问者模式(C# / JavaScript / PHP / Java / Python 演示代码)

热门文章

  1. 现在有哪些可以与微软的Visio相媲美的作图工具?
  2. 音频传输之Jitter Buffer设计与实现
  3. Ubutntu下使用realsense d435i(三):使用yolo v5测量目标物中心点三维坐标
  4. 以太坊接班人哪家强?——一张图看懂区块链
  5. 《精彩网址大全——工商经济科学教育卷》内容简介
  6. Android Audio(七)—— AudioFocus(duck)
  7. 在Jetson Nano上十行代码实现目标检测(jetson_inference)
  8. 关闭不需要服务 为Windows系统提速(转)
  9. 计算机异常断电后无法启动,电脑突然断电后开不了机怎么办【解决方法】
  10. 微软输入法 ——当前时间 快捷键