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

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>

效果图:

时间: 2024-12-18 00:02:42

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

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

实现黑名单的添加.修改.查询和删除,首先得有封装的3个类,便于使用 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

Android之——手机黑名单的实现

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47089209 有了前面几篇博文作为基础(<Android之--AIDL小结>.<Android之--AIDL深入>.<Android之--自动挂断电话的实现>),我将在这片博文中向大家介绍如何实现手机黑名单的功能.用过Android手机的用户都知道,如果不想接听一些人的电话或者接收一些人的短信,可以将这些人的手机号码放入手机黑名单中,此时,将不会接收到这

Android Studio添加Parcelable序列化小工具(快速提高开发效率)

Android Studio添加Parcelable序列化小工具(快速提高开发效率) Android Studio是google专门为开发Android提供的开发工具,在它内部可以直接的添加一些非常好用的开发小工具,这里就讲解怎样添加这些小工具,并且向大家推荐一个非常有用的对象传递时,必须要把对象序列化的接口Parcelable小工具; 这里先介绍下 Android中实现序列化的两个选择:一是实现Serializable接口(是JavaSE本身就支持的),一是实现Parcelable接口(是An

Android学习路线(六)为Android应用添加ActionBar

Action bar 是你可以为你的应用的Activity实现的最为重要的设计元素之一.它提供了集中UI特性,并且通过提供和其他的Android应用的一致性体验让你的应用能够很快被用户熟悉.主要的功能包括: 一个专用的显示应用表示的地方,并且能够指出用户当前在应用中的位置. 用户能够很方便地访问重要的功能(例如搜索). 提供视图切换导航(通过tab,或者下拉列表). 这次的训练课程提供了对action bar基础知识的快速引导.有关action bar的各种特性的更多信息,请查看Action B

Android开发之黑名单来电自动挂断

本实例允许用户动态添加号码到黑名单,并实现黑名单来电自动挂断.程序通过创建PhoneStateListener监听器来监听TelephonyManager的通话状态来实现该功能. 由于自Android 10之后Android不再对外公开挂断电话的API,如果需要挂断电话必须使用AIDL与电话管理Service进行通信,并调用服务中的API实现结束电话. 为了调用远程的AIDL Service,开发者需要将Android源码中的如下两个文拷到指定位置: com.android.internal.t

Android中万能的适配器的详细讲解

Android中万能的适配器的详细讲解 在Android开发中,适配器的用处是非常大的,尤其是效率优化方面.除了使用ViewHolder复用View之外,如果存在很多的ListView或者是一个ListView中存在很多的View组件,那对代码的阅读不是很好的.考虑到优化以及共通方面,我封装了ViewHolder类以及将Adapter类封装成共通的了,将对以后的开发带来很大的方便. (1).ViewHolder类的封装如下:ViewHolder类: package com.chengdong.s

【转】为Android应用添加搜索功能

为Android应用添加搜索功能 为Android应用增加搜索功能:增加搜索建议

为android系统添加USB AUDIO设备的放音和录音功能

http://blog.csdn.net/adits/article/details/8242146 开发环境简介 1. 主机系统: Unbuntu10.102. android系统版本: 4.0.3(Linux kernel 3.0.8) 综述 android的音频系统非常庞大复杂:涉及到java应用程序,java框架层,JNI,本地服务(AudioFlinger和AudioPolicyService),硬件抽象层HAL,ALSA-LIB和ALSA-DRIVER.本文将先分析音频系统的启动与模

Android studio 添加依赖

以前添加依赖总是到github上下载源码,再添加源码到module的依赖当中,其实在studio中,应该使用maven库. 比如在github上看到了sliding-menu这个项目,就应该到maven网站上找对应的库,之后把地址写入build.gradle中,比如以下就是sliding-menu的库, compile 'com.github.itsmechlark.android-sliding-menu:android-sliding-menu:1.0.1' 这样做的好处就是不必再 Andr