效果图:

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显示出数据内容相关推荐

  1. C# 使用自定义类+字典+JSON填充数据,脱离真实数据库,实现简单的增删改查和本地存储与读取数据

    前言 这个文章将不会用到数据库,另辟蹊径去实现本地的存储与读取,增删改查!~ 之前写项目用到的思路,因为是非常小的项目,不想依赖数据库来增删改查,以此避免复杂的数据库环境支持和安装.之前想上网查找有没 ...

  2. JDBC练习-完成商品品牌数据的增删改查操作

    准备环境 数据库表tb_brand -- 删除tb_brand表 drop table if exists tb_brand; -- 创建tb_brand表 create table tb_brand ...

  3. SQL Server创建数据库和数据的增删改查

    SQL Server创建数据库和数据的增删改查 本文是针对数据的增删改查,数据的创建 首先我们使用命令创建sql server数据库 D盘新建一个文件夹DB use master go --创建数据库 ...

  4. Node+Vue实现对数据的增删改查

      这是一个用于学生签到的小例子.主要用到的技术有node和Vue:用node搭建小型服务器,配置好路由,前端用vue写好组件,数据库采用的是mysql. 文件结构如下:   主要是功能是对数据的增删 ...

  5. Redis概述_使用命令对redis的数据进行增删改查_Jedis连接redis进行数据操作_redis进行数据缓存案例

    学习目标 redis 概念 下载安装 命令操作 1. 数据结构 持久化操作 使用Java客户端操作redis Redis 前言(从百度上抄的, 看看了解一下, 懒得排版了) 1. 概念: redis是 ...

  6. 从零开始的VUE项目-03(数据的增删改查)

    代码svn地址 (用户名:liu,密码;123) 这一篇中,我们要实现的基本就是这么个东西 这个页面就是我们创建的DataManagement.vue页面,我们的主要代码将写在这里面,这个表格我们将用 ...

  7. Unity 2021连接外网数据库,建表,增删改查遇到的问题记录

    目录 一.连接外网数据库遇到的问题 二.解决问题的方案 动态链接库下载地址: 效果图 一.连接外网数据库遇到的问题 先抛出问题,就是连接内网数据库不会报错,连接外网时和查询时就报这个错: The gi ...

  8. JDBC——商品品牌数据的增删改查操作

    JDBC练习--完成商品品牌数据的增删改查操作 一.准备环境 1.数据库表tb_brand 2.实体类Brand /*** 品牌* alt+鼠标左键,整列编辑* 在实体类中,基本数据类型建议使用其对应 ...

  9. C++数据库编程 MySQL Connecttor C++增删改查

    C++数据库编程简介 C++数据库编程 ODBC简介 C++数据库编程 ODBC连接SQL Server数据库 C++数据库编程 ODBC插入数据 C++数据库编程 ODBC查询数据 C++数据库编程 ...

最新文章

  1. 微信小程序分析送积分功能如何实现_微信小程序如何做出一个积分系统?
  2. Java数据结构和算法(七)——链表
  3. Java 洛谷 提交完题目的代码之后一直停留在 ( 正在等待编译……),刷新页面之后 ,显示 Unaccepted 0分
  4. Aizu - 1407 Parentheses Editor(对顶栈+模拟)
  5. MySQL入门之数据库介绍及MySQL介绍
  6. python分词训练_python练习17:用jieba分词做关键词提取,用matplotlib做可视化
  7. Vue.js学习与理解
  8. 使用Alcatraz来管理Xcode插件
  9. 基于 wke 的浏览器:如何实现 js 和 c++ 的互相调用
  10. 单片机C语言字符串转数字
  11. 华中科技大计算机第八次基础作业,华中科技大计算机基础第三次作业.doc
  12. python流程图-python如何画流程图
  13. 登录时用户名或密码错误弹窗提醒重新登录
  14. 谷歌语法(详解+举例)
  15. 绝地求生缺少xinput1_3.dll怎么办?
  16. 图像操作(反差,混合,调整图像亮度与对比度,绘制文字)
  17. Android系统控件获取自定义属性
  18. MSP430初学:MSP430单片机C语言基础(二)
  19. I/Q信号解调分析过程
  20. 弹性云服务器---ECS

热门文章

  1. 什么是存根类 Stub
  2. Eclipse离线下载安装Svn插件
  3. 11.Nginx总结 嘻哈的简写笔记——Nginx
  4. oracle数组越界,为什么栈中的数组越界后经常不崩溃,还可以正常的操作呢
  5. JetBrain Activate
  6. JAVA计算两个日期相差多少天
  7. [Python] 读取 rar/zip 压缩文件
  8. springboot泛型封装开发
  9. 51单片机串行通信(UART)
  10. 矩阵分解 LDL^T分解