前言:   这个博客主要实现listview的跳转并实现对数据库内容的更新并显示到listview上,还没有实现listview的实时更新和listview具体线条的添加(接下来的几篇博客会实现),如果对于基本布局不是很了解的可以看我上一篇的博客,那么话不多少,步入正题。

一、设置listview中item的点击事件

 lv.setOnItemClickListener(new OnItemClickListener() {

             @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Bundle bundle = new Bundle();
int id1 = list.get(position).getId();
String thing = list.get(position).getT_name();
String place = list.get(position).getT_place();
String time = list.get(position).getTime();
bundle.putInt("id", id1);
bundle.putString("thing", thing);
bundle.putString("place", place);
bundle.putString("time", time);
Intent intent = new Intent();
intent.putExtras(bundle); intent.setClass(MainActivity.this, Updata_delete.class); startActivity(intent); }
});

二、点击item之后会跳到updata_delete页面,就如同这个页面的名字一样,我们要在这个页面实现数据库数据的更新和删除(在这只实现更新),在写代码的时候我们需要设置几个EditTextView用来接收从listview传来的数据,同时也能让用户进行修改操作具体布局如下:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" > <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="事件名:"
android:textSize="30dp" /> <EditText
android:id="@+id/et_things1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入事件名"
android:textSize="25dp" /> <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="时间:"
android:textSize="30dp" /> <EditText
android:id="@+id/et_time1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入时间"
android:textSize="25dp" /> <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="地点:"
android:textSize="30dp" /> <EditText
android:id="@+id/et_place1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入地点"
android:textSize="25dp" /> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" > <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="update"
android:text="修改" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="delete"
android:text="删除" />
</LinearLayout> </LinearLayout>

三、剩下的就是实现接收数据并更新的操作代码了,具体解释:1、我在里面使用了onstart()方法来获取id,这个方法是在这个页面可见时就会调用(具体细节可参考http://www.cnblogs.com/fansen/p/5667450.html).2、当选择id作为筛选条件的时候,用一般的execsql()方法(因为内置的update方法里的参数是String类型,但是execsql()方法没有返回值,所以一定要通过测试最终是否成功更新来设置吐司),我想了很长时间,还是没能实现用内置方法来进行更新,可能是要重写这个方法吧。。。maybe。。。。

 package com.example.hhah;

 import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast; public class Updata_delete extends Activity { private EditText et_time;
private EditText et_place;
private EditText et_things;
private MyOpenHelper myOpenHelper;
private int id; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.item_listview);
myOpenHelper = new MyOpenHelper(getApplicationContext());
et_things = (EditText) findViewById(R.id.et_things1);
et_place = (EditText) findViewById(R.id.et_place1);
et_time = (EditText) findViewById(R.id.et_time1);
Bundle bundle = getIntent().getExtras();
String thing = bundle.getString("thing");
String place = bundle.getString("place");
String time = bundle.getString("time");
et_things.setText(thing);
et_time.setText(place);
et_place.setText(time);
} @Override
protected void onStart() {
Bundle bundle = getIntent().getExtras();
id = bundle.getInt("id");
System.out.println(id);
super.onStart();
} public void update(View view) {
String thing = et_things.getText().toString().trim();
String place = et_place.getText().toString().trim();
String time = et_time.getText().toString().trim();
SQLiteDatabase db = myOpenHelper.getWritableDatabase();
db.execSQL("update biao01 set t_name='" + thing + "',t_place='" + place + "',time='" + time + "' where _id='"
+ id + "'");
Toast.makeText(getApplicationContext(), "更新成功", 1).show();
/*
* ContentValues values=new ContentValues(); values.put("t_thing", thing);
* values.put("t_place", place); values.put("time", time); db.update("biao01",
* values, "_id=?",new String[] {});
*/ }
}

四、由于我在这个更新的代码编写过程中对布局,界面风格、表的结构(我加了主键)有了调整,所以之前的记账本开发(一)需要有一定的修改,我会进行修改。。。,之后的博客会对其他几项内容进行实现,并且实现listview的实时更新,还会不断美化布局。。。

五、稳定心态,不被外界干扰、厚积薄发!

2019-03-27

安卓入门——————简单记账本的开发(二)-点击listview跳转并实现数据的更新的更多相关文章

  1. 安卓入门——————简单记账本的开发(用sqlite存储数据)(一)

    设计思想————首先要确定有几个页面.和每个页面的大致布局 由于是入门,我也是学习了不是很长的时间,所以项目比较low.... 第一个页面,也就是打开APP的首页面: 今天这个博客,先实现添加功能!: ...

  2. javaweb学习总结(二十六)——jsp简单标签标签库开发(二)

    一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...

  3. javaweb(二十六)——jsp简单标签标签库开发(二)

    一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...

  4. 【搬砖】安卓入门(1)- Java开发入门

    01.01_计算机基础知识(计算机概述)(了解) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代 ...

  5. 【搬砖】安卓入门(3)- Java开发编程基础--循环控制语句

    04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } 复制代码 B:循环结构for语句的 ...

  6. 【搬砖】安卓入门(2)- Java开发编程基础--进制转换和运算符

    02.01_Java语言基础(常量的概述和使用)(掌握) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 ...

  7. 【搬砖】安卓入门(4)- Java开发编程基础--数组

    05.01_Java语言基础(数组概述和定义格式说明)(了解) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. ...

  8. 简单记账本APP开发二

    今天主要是进行了适配器的编写,数据库的创建以及对完善了业务逻辑,简单的APP到此已经通过测试可以使用.

  9. koa 基础(二十四)封装 DB 库 --- 新增数据、更新数据、删除数据

    1.根目录/module/db.js /** * DB库 */ var MongoClient = require('mongodb').MongoClient; var Config = requi ...

随机推荐

  1. Promise 用法

    Promise是一个构造函数,自己身上有all.reject.resolve这几个眼熟的方法,原型上有then.catch等同样很眼熟的方法. 那就new一个 Promise的构造函数接收一个参数,是 ...

  2. Linux 定时任务调度(crontab命令)

    crond 是Linux下用周期性的执行某种任务或者等待处理某些事件的一个守护进程,crond 进程会每分钟定期检查是否有要执行的任务,如果有要执行的任务则自动执行该任务 Linux 下的任务调度 系 ...

  3. C语言面试题分类->宏定义

    1.写一个“标准”宏,这个宏输入两个参数并返回较小的一个 答:#define MIN(x, y) ((x)<(y)?(x):(y))//注意x,y要加括号,因为x,y如果有复合运算会出现问题. ...

  4. css3的动画

    一.CSS3变形 CSS3变形是一些效果的集合 如平移.旋转.缩放.倾斜效果 每个效果都可以称为变形(transform),它们可以分别操控元素发生平移.旋转.缩放.倾斜等变化 二.CSS3位移:tr ...

  5. js canvas游戏初级demo-躲避障碍物

    在线演示地址 http://200ok.fun:3100/html/game_demo.html 继上次js canvas游戏初级demo-上下左右移动(https://www.cnblogs.com ...

  6. API 自动化框架

    API 自动化框架 个人认为接口自动化测试使用python语言编写更加简单,但所有接口自动化项目代码的思维都是一样的 1.项目包结构 1.case:存放用例数据的包,将所有用例数据以配置文件形式传入 ...

  7. Python request SSL证书问题

    错误信息如下: 1 requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_s ...

  8. linux上磁盘的操作相关命令

    1.查看磁盘IO负载 - 看哪些进程在读写磁盘 lsof /dev/sda2 |head

  9. 2016(4)数据库系统,ER模型,规范化理论,并发控制

    试题四(共25分) 阅读以下关于数据库设计的叙述,在答题纸上回答问题1至问题3. 某航空公司要开发一个订票信息处理系统,以方便各个代理商销售机票.开发小组经过设计,给出该系统的部分关系模式如下: 航班 ...

  10. Linux系统(四)LVS集群负载均衡NAT模式

    序言 提到LVS,就从章文嵩博士开始吧,反正也不知道如何下笔来写这一篇.章大博士,读博时候创建这个lvs软件项目,但是他提倡开源精神,在用户的建议和反馈中,这个花了他两周时间开发的开源软件不断得到改建 ...