DBHelper.java

package com.hanqi.test3;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log; /**
* Created by Administrator on 2016/4/15.
*/
public class DBHelper extends SQLiteOpenHelper { public DBHelper(Context context) {
super(context, "blacklist.db",null, 1);
} @Override
public void onCreate(SQLiteDatabase db) { db.execSQL("create table black_number (_id integer primary key autoincrement,phone_number varchar)"); Log.e("TAG","onCreate"); } @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
}

BlackNumber.java

package com.hanqi.test3;

/**
* Created by Administrator on 2016/4/15.
*/
public class BlackNumber {
private long id;
private String phoneNumber; public BlackNumber(long id, String phoneNumber) {
this.id = id;
this.phoneNumber = phoneNumber;
} public BlackNumber() { } public long getId() {
return id;
} public void setId(long id) {
this.id = id;
} public String getPhoneNumber() {
return phoneNumber;
} public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
} public BlackNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
} @Override
public String toString() {
return "BlackNumber{" +
"id=" + id +
", phoneNumber='" + phoneNumber + '\'' +
'}';
}
}

TestActivity1.java

package com.hanqi.test3;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.InputType;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast; import java.util.List; public class TestActivity1 extends AppCompatActivity { private ListView lv_1;
private List<BlackNumber> data;
private BlackListAdapter dla; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test1); lv_1 = (ListView)findViewById(R.id.lv_1); //获取数据集合
BlackNumberDAO bd = new BlackNumberDAO(this); data = bd.getAll(); dla = new BlackListAdapter(); //设置适配器
lv_1.setAdapter(dla);
} //实现列表的适配器
class BlackListAdapter extends BaseAdapter
{
@Override
public int getCount() {
return data.size();
} @Override
public Object getItem(int position) {
return data.get(position);
} @Override
public long getItemId(int position) {
return data.get(position).getId();
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
//position:要显示的那条记录 //判断可复用的视图是否为空
if (convertView == null)
{
//获取视图
convertView = View.inflate(TestActivity1.this,android.R.layout.simple_list_item_1,null);
}
//给视图绑定数据
TextView tv =(TextView)convertView.findViewById(android.R.id.text1);
tv.setText(data.get(position).getPhoneNumber()); return convertView;
}
} public void bt1_OnClick(View v)
{
final EditText editText = new EditText(this); editText.setHint("请输入电话号码"); editText.setInputType(InputType.TYPE_CLASS_PHONE); //editText.setLayoutParams(new DrawerLayout.LayoutParams()); //editText.setInputType(); //构造自定义对话框
new AlertDialog.Builder(this)
.setTitle("添加黑名单")
.setView(editText)
.setPositiveButton("添加", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) { //构造实体类
BlackNumber blacknumber = new BlackNumber(editText.getText().toString()); //调用数据库操作类DAO,保存数据
BlackNumberDAO blackNumberDAO = new BlackNumberDAO(TestActivity1.this); blackNumberDAO.insert(blacknumber); data.add(blacknumber); //通知刷新
dla.notifyDataSetChanged(); Toast.makeText(TestActivity1.this, "数据保存成功", Toast.LENGTH_SHORT).show();
}
})
.setNeutralButton("取消",null)
.show();
}
}

BlackNumberDAO.java

package com.hanqi.test3;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log; import java.util.ArrayList;
import java.util.List; /**
* Created by Administrator on 2016/4/15.
*/
public class BlackNumberDAO { //定义成成员变量
private DBHelper dbHelper; public BlackNumberDAO(Context context)
{
//初始化工具类
dbHelper = new DBHelper(context);
} //增
public void insert(BlackNumber blackNumber)
{
//获取数据库连接
SQLiteDatabase sd = dbHelper.getWritableDatabase(); //要添加数据的键值对集合
ContentValues contentValues = new ContentValues(); contentValues.put("phone_number",blackNumber.getPhoneNumber()); //数据添加 contentValues:集合存了键值对
sd.insert("black_number",null,contentValues); //关闭数据库
sd.close(); Log.e("TAG","添加数据成功");
} //删
public void delete(long id)
{ } //改
public void update(BlackNumber blackNumber)
{ } //查
//用List(List里面装的是实体类的实例)返回数据
public List<BlackNumber> getAll()
{
List<BlackNumber> rtn = new ArrayList<BlackNumber>();
// ArrayList:实现类 List:接口 //获取数据库连接
SQLiteDatabase sd = dbHelper.getWritableDatabase(); //查询返回游标
Cursor cursor = sd.query("black_number", null, null, null, null, null, null); //移动游标,获取数据
while (cursor.moveToNext())
{
//构造实体类的实例,放入List
rtn.add(new BlackNumber(cursor.getLong(0),cursor.getString(1)));
} Log.e("TAG","数据数量"+cursor.getCount()); sd.close();
return rtn;
}
}

activity_test1.xml

<?xml version="1.0" encoding="utf-8"?>
<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="16dp"
android:paddingLeft="16dp"
android:paddingTop="16dp"
android:paddingRight="16dp"
tools:context="com.hanqi.test3.TestActivity1"
android:orientation="vertical"> <ListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/lv_1"></ListView>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加"
android:onClick="bt1_OnClick"/> </LinearLayout>

效果图:

Android课程---添加黑名单的练习(课堂讲解)的更多相关文章

  1. Android课程---添加黑名单的练习2(课堂讲解)

    实现黑名单的添加.修改.查询和删除,首先得有封装的3个类,便于使用 BlackNumber.java package com.hanqi.test3; /** * Created by Adminis ...

  2. 一培训机构设计的学习android课程内容:供大家参考

    转自:http://www.cnblogs.com/csj007523/archive/2011/06/16/2082682.html 一培训机构设计的学习android课程内容:供大家参考 第一阶段 ...

  3. Android下添加新的自定义键值和按键处理流程

            Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我 ...

  4. Android 数据库管理— — —添加数据

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" ...

  5. Android课程---进度条及菜单的学习

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  6. solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据

    solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...

  7. 在Xcode5和Android Studio添加工程间的依赖

    正在编辑中,尚未完成 先看看ios的target是什么,请先参看http://www.cocoachina.com/bbs/read.php?tid-10884.html做个大概了解 这里有一篇文章, ...

  8. Eclipse / android studio 添加第三方jar包 步骤

    eclipse 将第三方包放到libs文件夹后并没有引用. 基本步骤分为3步,具体介绍如下: 打开自己的Eclipse,在自己的Android工程上名上右键->Build Path ->C ...

  9. Android RecyclerView添加Header头部

     Android RecyclerView添加Header头部 Android RecyclerView不像以前的ListView那样直接添加头部,如果要给RecyclerView增加头部,则需要 ...

随机推荐

  1. 逻辑回归LR

    逻辑回归算法相信很多人都很熟悉,也算是我比较熟悉的算法之一了,毕业论文当时的项目就是用的这个算法.这个算法可能不想随机森林.SVM.神经网络.GBDT等分类算法那么复杂那么高深的样子,可是绝对不能小看 ...

  2. C和指针 第十二章 使用结构和指针

    链表是一种常用的数据结构,每个节点通过链或者指针链接在一起,程序通过间接指针访问链表中的节点. typedef struct Node { //指向下一个节点的指针 struct Node *next ...

  3. 前端XSS攻击和防御

    xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会 ...

  4. php实验四

    实验四 1.创建一个Person类,Person中包含三个属性name,age,wealth,分别设置为public,private,protected,再定义Person类的子类Student. 2 ...

  5. 【转】android中ListView的定位:使用setSelectionFromTop实现ListView的position的保持

    如果一个ListView太长,有时我们希望ListView在从其他界面返回的时候能够恢复上次查看的位置,这就涉及到ListView的定位问题: 解决的办法如下: 1 2 3 4 5 6 7 // 保存 ...

  6. 前端 js 实现简单 表单提交

    1. 登录页 验证用户身份,登录成功之后等待一定秒数,跳转到操作页面 <html> <head> <title>Login.html</title> & ...

  7. [python面向对象]--基础篇

    1.#类 #类就是一个模板,模板里可以包含多个函数,函数里实现一些功能 #定义一个类 class bar: def foo(self,agr): print(self,agr) obj = bar() ...

  8. React学习笔记-3-非dom属性介绍

    非dom属性?dangerouslySetInnerHTML,ref,key非dom标准属性,也就是说dom标准里面没有规定的属性,react引入了三个非dom属性,如上.dangerouslySet ...

  9. [译]:Orchard入门——手动安装Orchard

    原文链接:Manually Installing Orchard 文章内容基于Orchard 1.8版本 本文将演示通过zip安装包安装Orchard所需要的步骤. 本文包括如下三种不同的Orchar ...

  10. HDU 2069 Coin Change(完全背包变种)

    题意:给你5种银币,50 25 10 5 1,问你可以拼成x的所有可能情况个数,注意总个数不超过100个 组合数问题,一看就是完全背包问题,关键就是总数不超过100个.所有我们开二维dp[k][j], ...