[Android Studio]微型技术报告-手机平台应用开发
最近,我在进行有关手机平台的应用开发。在项目开发过程中,可谓是吃尽了苦头,临近崩溃。由于是才接触这门技术的小白,很多地方都是初次接触,操作起来显得特别困难,所以在这个过程中遇到了许许多多的问题,让我甚是苦恼。于是我花费了大把的时间和精力上网各种逛论坛刷博客查阅资料,总算,功夫不负有心人,问题差不多都解决了,自己也感觉在这门技术领域初步入门了。目前项目的开发也变得顺畅了些,虽然不是完全没问题,但相比之前,已经好了很多了。对于这些收获,我是很高兴的。在这个过程中,自己结合自己项目的具体要求,通过上网查阅一些相关的资料,发现了一些非常实用好用通用的设计模式,掌握了感觉收获颇多,现在我就把这些东西分享给你们,希望对那些和我同样处于技术开发临近崩溃边缘的同学一些帮助,希望能帮你重拾信心。
话不多说,进入正题!
技术一:在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]微型技术报告-手机平台应用开发相关推荐
- 手机平台应用开发微型技术报告2
本次微型技术报告主要针对移动开发技术中的数据存储.组件通信以及服务广播和通知.整理干货如下: 关于数据存储,了解了了解Android系统中有哪些数据存储的方式:熟悉并掌握Preferences的操作: ...
- android studio运行APP到手机
android studio运行APP到手机 一.数据线连接手机调试 1.打开android手机的开发者模式(机型不一样,打开方式不一样,具体可百度) 2.用数据线把电脑和手机连起来(最好用原装数据线 ...
- Android让APP运行在新环境上,Android Studio环境在真手机运行app项目教程
对于Android Studio环境在真手机运行app项目的相关操作有许多网友咨询过,小编今天就分享Android Studio环境在真手机运行app项目的详细步骤,一起好好学习下吧! 要想将Andr ...
- android 查看文件系统的格式,Android studio 3.0 查看手机文件系统的方法(超简单)
众所周知,我们要查看安卓手机中文件系统前提条件是要root手机,然后去DDMS里面去看,但是现在很多手机都不好root,替代的方法是用电脑模拟器,不管怎么样,都挺麻烦的,最近更新Android stu ...
- Android Studio无线Wifi调试手机的两种方案
Android Studio无线Wifi调试手机的两种方案 第一种方式 使用adbWireless连接 第二种方式 使用插件Android Wifi ADB连接 总结 第一种方式 使用adbWirel ...
- Android Studio 使用 WIFI 连接手机
Android Studio 使用 WIFI 连接手机 手机连线经常接触不良, 连上又断又连上又断的时候, 只要确保有一点时间让你连上 adb wifi, 就不用再听到那烦人的声音. 注意手机跟电脑必 ...
- android studio绘制统计图,基于Android Studio的饼图账单的设计与开发_毕业论文.doc
基于Android Studio的饼图账单的设计与开发_毕业论文 Anhui Vocactional & Technical College of Industry & Trade 毕 ...
- Android NDK开发之旅(2):一篇文章搞定Android Studio中使用CMake进行NDK/JNI开发
Android NDK开发之旅(2):一篇文章搞定android Studio中使用CMake进行NDK/JNI开发 (码字不易,转载请声明出处:http://blog.csdn.NET/andrex ...
- 物联网APP:使用android studio实现阿里云物联网平台数字签名(Signature)(附源代码)
摘要:本文讲解如何在安卓移动端实现阿里云物联网平台数字签名,使用的是android studio编写apk的方式进行,win7 x64系统下实现,文中提供了如何配置android studio的国内镜 ...
最新文章
- 神经正切核,深度学习理论研究的最新热点?
- java redis 主从配置_Redis实现主从复制(MasterSlave)
- 树莓派:和电脑之间的串口编程,以及树莓派的备份
- 机器学习模型 知乎_机器学习中有哪些模型?
- 实践 config drive - 每天5分钟玩转 OpenStack(170)
- SAP供应商编码范围
- Android 首页图片轮播
- 【Tools】Modbus Slave 7安装详解
- 记录工作中常用的CSS3
- 2013蓝桥杯java试题_蓝桥杯2013决赛java本科b组试题.doc
- powerShell中 diff的使用
- 调研报告|在线语音识别改进之 RNN-T 训练
- solr6.6 导入索引数据
- Oracle中UNION和ORDER BY共用方法
- 切片与MapTask并行度决定机制
- es if语法 script_Elasticsear7.x DSL语法之文档管理
- Excel的数据导入到PB的DW中
- 推荐参考文献元数据挖掘的几篇论文
- ussd代码大全_如何运行USSD代码
- 设计模式之访问者模式(C# / JavaScript / PHP / Java / Python 演示代码)
热门文章
- 现在有哪些可以与微软的Visio相媲美的作图工具?
- 音频传输之Jitter Buffer设计与实现
- Ubutntu下使用realsense d435i(三):使用yolo v5测量目标物中心点三维坐标
- 以太坊接班人哪家强?——一张图看懂区块链
- 《精彩网址大全——工商经济科学教育卷》内容简介
- Android Audio(七)—— AudioFocus(duck)
- 在Jetson Nano上十行代码实现目标检测(jetson_inference)
- 关闭不需要服务 为Windows系统提速(转)
- 计算机异常断电后无法启动,电脑突然断电后开不了机怎么办【解决方法】
- 微软输入法 ——当前时间 快捷键