sqlLite数据库 实现对数据的增删改查 以及用list显示出数据内容
效果图:
1 、创建class:BlackNumberDBHelper 黑名单数据库的DBHelp
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;/*** * @author Administrator* 黑名单数据库的DBHelp*/
public class BlackNumberDBHelper extends SQLiteOpenHelper{public BlackNumberDBHelper(Context context) {super(context, "blacknumber.db", null, 1);}//第一次创建数据库的时候执行@Overridepublic void onCreate(SQLiteDatabase db) {String sql = "CREATE TABLE blacknumber (_id integer primary key autoincrement, number varchar(20))";db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}
2、创建class:BlackNumberDao 黑名单数据库的db操作
import java.util.ArrayList;
import java.util.List;import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.iponeguardian.db.BlackNumberDBHelper;
/*** * @author Administrator* 黑名单数据库的db操作*/
public class BlackNumberDao {private Context context; //上下文private Cursor cursor; //游标private SQLiteDatabase db; private String sql ; //sql语句private BlackNumberDBHelper dbHelper;public BlackNumberDao(Context context) { this.context = context;dbHelper = new BlackNumberDBHelper(context);}/*** 查找全部*/public List<String> getAllNumbers(){db = dbHelper.getReadableDatabase();List<String> number_list = new ArrayList<String>(); //存放所有的电话号码if(db.isOpen()){sql = "SELECT * FROM BLACKNUMBER";cursor = db.rawQuery(sql, null); //得到一组游标的结果while(cursor.moveToNext()){ //遍历游标String number_all = cursor.getString(1);number_list.add(number_all); }cursor.close();db.close();}return number_list;}/*** 查询的方法* @param number* @return*/public boolean find (String number){boolean result = false;db = dbHelper.getReadableDatabase();if(db.isOpen()){sql = "select number from blacknumber where number = ?";cursor = db.rawQuery(sql, new String[]{number});if(cursor.moveToNext()){result = true;}else{result = false;}cursor.close(); db.close();}return result ;}/*** 添加的方法*/public void add (String number){if(find(number)){return;}db = dbHelper.getWritableDatabase();if(db.isOpen()){String sql = "insert into blacknumber (number) values (?)"; db.execSQL(sql,new Object[]{number}); db.close();}}/*** 删除*/public void delete(String number){db = dbHelper.getWritableDatabase();if(db.isOpen()){sql = "DELETE FORM BLACKNUMBER WHERE NUMBER=?";db.execSQL(sql,new Object[]{number}); db.close();}}/*** 修改更新lodNumber 旧的号码 newNumber新的号码*/public void update(String oldNumber, String newNumber){db = dbHelper.getWritableDatabase();if(db.isOpen()){sql = "update BLACKNUMBER SET NUMBER=? WHERE NUMBER = ?";db.execSQL(sql,new Object[]{newNumber,oldNumber}); db.close();}}
}
3、创建用于管理黑名单的布局文件activity_call_sms.xml:
<LinearLayout 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"android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical"><LinearLayout android:layout_width="match_parent"android:layout_height="40dip"android:background="@drawable/title_background"android:gravity="center_horizontal|center_vertical" android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="黑名单管理"android:textColor="#ff289F38" android:textSize="22sp" /><Buttonandroid:id="@+id/btn_add_black_number"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20dip"android:background="@drawable/button_selector"android:text="添加"android:textColor="#06A3CF"android:textSize="20sp" /></LinearLayout><ListViewandroid:cacheColorHint="@android:color/transparent"android:id="@+id/listView_callsms"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="10dip"android:listSelector="@drawable/item_background_selector" android:numColumns="3" ></ListView></LinearLayout>
3.2以及它list显示的Item()布局文件:blacknumber_item.xml, 这里我们用到的Adpter是ArrayAdapter,他的Item布局文件有且仅有一个TextView组成:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/textView_blackNumber_Item"android:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="#E53403"android:textSize="18sp"/>
4、下面进行最重要的Activity操作,新建CallSmsActivity继承Activity并实现OnClickListener 实现它未实现的方法。
package com.iponeguardian.ui;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.InputType;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import com.example.iponeguardian.R;
import com.iponeguardian.dao.BlackNumberDao;
/**
* 通讯位置之 黑名单管理的activity
* @author Administrator
*
*/
public class CallSmsActivity extends Activity implements OnClickListener {
private Button btn_add_black_number; //添加黑名单按钮
private ListView listView_callsms; //显示黑名单信息
private BlackNumberDao numberDao; //黑名单数据库
private List<String> numbers; //黑名单号码的集合
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_call_sms);
numberDao = new BlackNumberDao(this);
//获得引用
btn_add_black_number = (Button) findViewById(R.id.btn_add_black_number);
listView_callsms = (ListView)findViewById(R.id.listView_callsms);
//绑定侦听事件
btn_add_black_number.setOnClickListener(this);
//调用数据库getAll方法得到所有的黑名单数据,并存在List集合中
numbers = numberDao.getAllNumbers();
for(int i=0;i<numbers.size();i++){
System.out.println("++++++++++++++++++++++++++++++"+numbers.get(i));
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(CallSmsActivity.this, R.layout.blacknumber_item,numbers);
//为显示黑名单的list设置Adapter
listView_callsms.setAdapter(adapter);
}
@Override
public void onClick(View v) {
//弹出对话框用来添加黑名单,传进去的上下文是CallSmsActivity.this 因为这个对话框挂载在Activity里边
AlertDialog.Builder builder = new Builder(CallSmsActivity.this);
builder.setTitle("添加黑名单");
final EditText etitText = new EditText(CallSmsActivity.this);
//设置它的文本类型只能是数字
etitText.setInputType(InputType.TYPE_CLASS_PHONE);
builder.setView(etitText);
builder.setPositiveButton("添加", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
//得到输入框中输入的类容
String number = etitText.getText().toString().trim();
if(TextUtils.isEmpty(number)){
Toast.makeText(getApplicationContext(), "添加黑名单号码不能为空", 1).show();
return;
}else{
//调用数据库添加方法
numberDao.add(number);
//通知ListView更新数据
}
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.create().show();
}
}
二、 长按ListView列表弹出”更新黑名单“和删除黑名单、listView时实更新
1 长按ListView列表弹出”更新黑名单“和删除黑名单,重写onCreateContextMenu和onContextItemSelected方法
//listView设置的上下文菜单@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo);MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.content_menu, menu); //content_menu是配置文件内容}
配置文件content_menu:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" ><item android:id="@+id/update_number" android:title="更改黑名单"/><item android:id="@+id/delete_number" android:title="删除黑名单"/>
</menu>
//菜单的点击事件,通过item参数得到当前点击的menu信息@Overridepublic boolean onContextItemSelected(MenuItem item) {AdapterContextMenuInfo info =(AdapterContextMenuInfo) item.getMenuInfo();int id = (int)info.id; //当前条目的idString number = numbers.get(id); //得到list要删除的内容switch (item.getItemId()) {case R.id.update_number: //更新的按钮(菜单文件放在menu中的content_menu.xml)updateNumner(number); break;case R.id.delete_number: //删除 的按钮 numberDao.delete(number); //执行数据库的删除操作 numbers = numberDao.getAllNumbers(); //重新获取最新的黑名单adapter.notifyDataSetChanged(); //通知listView更新数据break;}return super.onContextItemSelected(item);}
更改对话框的实现:
/*** 更新黑名单的方法* @param number*/private void updateNumner(final String oldNumber) {AlertDialog.Builder builder = new Builder(CallSmsActivity.this);builder.setTitle("更改黑名单号码");final EditText etitText = new EditText(CallSmsActivity.this); //设置它的文本类型只能是数字etitText.setInputType(InputType.TYPE_CLASS_PHONE);builder.setView(etitText);builder.setPositiveButton("更改", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {//得到输入框中输入的新号码String newNumber = etitText.getText().toString().trim();if(TextUtils.isEmpty(newNumber)){Toast.makeText(getApplicationContext(), "添加黑名单号码不能为空", 1).show();return;}else{//调用数据库更改方法numberDao.update(oldNumber, newNumber);//调用数据库getAll方法得到所有的黑名单数据,并存在List集合中numbers = numberDao.getAllNumbers(); //通知ListView更新数据,只更新发生改变的数据adapter.notifyDataSetChanged(); }}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Overridepublic void onClick(DialogInterface dialog, int which) { }});builder.create().show(); }
sqlLite数据库 实现对数据的增删改查 以及用list显示出数据内容相关推荐
- C# 使用自定义类+字典+JSON填充数据,脱离真实数据库,实现简单的增删改查和本地存储与读取数据
前言 这个文章将不会用到数据库,另辟蹊径去实现本地的存储与读取,增删改查!~ 之前写项目用到的思路,因为是非常小的项目,不想依赖数据库来增删改查,以此避免复杂的数据库环境支持和安装.之前想上网查找有没 ...
- JDBC练习-完成商品品牌数据的增删改查操作
准备环境 数据库表tb_brand -- 删除tb_brand表 drop table if exists tb_brand; -- 创建tb_brand表 create table tb_brand ...
- SQL Server创建数据库和数据的增删改查
SQL Server创建数据库和数据的增删改查 本文是针对数据的增删改查,数据的创建 首先我们使用命令创建sql server数据库 D盘新建一个文件夹DB use master go --创建数据库 ...
- Node+Vue实现对数据的增删改查
这是一个用于学生签到的小例子.主要用到的技术有node和Vue:用node搭建小型服务器,配置好路由,前端用vue写好组件,数据库采用的是mysql. 文件结构如下: 主要是功能是对数据的增删 ...
- Redis概述_使用命令对redis的数据进行增删改查_Jedis连接redis进行数据操作_redis进行数据缓存案例
学习目标 redis 概念 下载安装 命令操作 1. 数据结构 持久化操作 使用Java客户端操作redis Redis 前言(从百度上抄的, 看看了解一下, 懒得排版了) 1. 概念: redis是 ...
- 从零开始的VUE项目-03(数据的增删改查)
代码svn地址 (用户名:liu,密码;123) 这一篇中,我们要实现的基本就是这么个东西 这个页面就是我们创建的DataManagement.vue页面,我们的主要代码将写在这里面,这个表格我们将用 ...
- Unity 2021连接外网数据库,建表,增删改查遇到的问题记录
目录 一.连接外网数据库遇到的问题 二.解决问题的方案 动态链接库下载地址: 效果图 一.连接外网数据库遇到的问题 先抛出问题,就是连接内网数据库不会报错,连接外网时和查询时就报这个错: The gi ...
- JDBC——商品品牌数据的增删改查操作
JDBC练习--完成商品品牌数据的增删改查操作 一.准备环境 1.数据库表tb_brand 2.实体类Brand /*** 品牌* alt+鼠标左键,整列编辑* 在实体类中,基本数据类型建议使用其对应 ...
- C++数据库编程 MySQL Connecttor C++增删改查
C++数据库编程简介 C++数据库编程 ODBC简介 C++数据库编程 ODBC连接SQL Server数据库 C++数据库编程 ODBC插入数据 C++数据库编程 ODBC查询数据 C++数据库编程 ...
最新文章
- 微信小程序分析送积分功能如何实现_微信小程序如何做出一个积分系统?
- Java数据结构和算法(七)——链表
- Java 洛谷 提交完题目的代码之后一直停留在 ( 正在等待编译……),刷新页面之后 ,显示 Unaccepted 0分
- Aizu - 1407 Parentheses Editor(对顶栈+模拟)
- MySQL入门之数据库介绍及MySQL介绍
- python分词训练_python练习17:用jieba分词做关键词提取,用matplotlib做可视化
- Vue.js学习与理解
- 使用Alcatraz来管理Xcode插件
- 基于 wke 的浏览器:如何实现 js 和 c++ 的互相调用
- 单片机C语言字符串转数字
- 华中科技大计算机第八次基础作业,华中科技大计算机基础第三次作业.doc
- python流程图-python如何画流程图
- 登录时用户名或密码错误弹窗提醒重新登录
- 谷歌语法(详解+举例)
- 绝地求生缺少xinput1_3.dll怎么办?
- 图像操作(反差,混合,调整图像亮度与对比度,绘制文字)
- Android系统控件获取自定义属性
- MSP430初学:MSP430单片机C语言基础(二)
- I/Q信号解调分析过程
- 弹性云服务器---ECS