前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[android] 手机卫士黑名单功能(ListView结合SQLite增删改)

[android] 手机卫士黑名单功能(ListView结合SQLite增删改)

作者头像
唯一Chat
发布2019-09-10 15:42:51
8580
发布2019-09-10 15:42:51
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

修改界面,在顶部横条上增加一个添加按钮,点击打开一个自定义对话框,输入电话号码和拦截模式保存到数据库

自定义对话框看这篇https://cloud.tencent.com/developer/article/1944731

添加记录

调用Builder对象的show()方法,获取AlertDialog对象

调用View.inflate()方法,将布局文件转成View对象

调用View对象的findViewById()方法,获取确认和取消的Button对象

调用Button对象的setOnClickListener()方法,设置点击事件,匿名内部类实现OnClickListener接口,重写onClick()方法

调用AlertDialog对象的dismiss()方法,可以关闭对话框

调用View对象的findViewById()方法,获取到各个控件的值,进行判断处理

调用之前定义好的Dao类BlackNumberAdo对象的add()方法,数据库增加一条记录,参数:String电话号码,String拦截模式

此时ListView并不会显出出来刚添加的记录,需要退出这个Activity重写进入,我们通知适配器数据更新

调用集合List对象的add()方法,添加一条数据,参数:0(第一个),数据

调用ListAdapter对象的notifyDataSetChanged()方法,通知数据更新

删除记录

条目布局文件中,在右侧放置一个垃圾桶的小图标,上下居中,父控件右边

安卓系统的点击事件和js的点击事件很相似,

参考这篇:http://www.cnblogs.com/taoshihan/p/5438729.html

获取到删除按钮Button对象

调用Button对象,设置点击事件

获取AlertDialog.Builder对象,展示是否确认删除的对话框

调用AlertDialog.Builder对象,设置确认按钮和取消按钮,注意设置点击事件OnClickListener时,它所在的包是DialogInterface.OnClickListener

调用之前定义好的Dao类BlackNumberAdo对象的delete()方法,参数:String电话号码

调用集合List对象的remove()方法,删除一条数据,参数:int索引

调用ListAdapter对象的notifyDataSetChanged()方法,通知数据更新

CallSmsSafeActivity.java

代码语言:javascript
复制
package com.qingguow.mobilesafe;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.qingguow.mobilesafe.db.ado.BlackNumberAdo;

/**
 * 通讯卫士
 * 
 * @author taoshihan
 * 
 */
public class CallSmsSafeActivity extends Activity {
    private ListView listview;
    private List<Map<String, String>> infos;
    private BlackNumberAdo dao;
    private MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_call_sms_safe);
        listview = (ListView) findViewById(R.id.lv_blacknumber);
        myAdapter=new MyAdapter();

        dao = new BlackNumberAdo(this);
        infos = dao.findAll();
        listview.setAdapter(myAdapter);
        // //添加100条测试数据
        // Random random=new Random();
        // for(int i=1;i<=100;i++){
        // ado.add("18805419000"+i, String.valueOf(random.nextInt(3)+1));
        // }
        
    }
    class ViewHolder{
        public TextView phoneView;
        public TextView modeView;
        public ImageView iv_delete;
    }
    private class MyAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return infos.size();
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            View view;
            ViewHolder holder=new ViewHolder();
            if(convertView==null){
                view = View.inflate(CallSmsSafeActivity.this,
                        R.layout.list_call_sms_safe_item, null);
                holder.phoneView=(TextView) view
                        .findViewById(R.id.tv_main_phone);
                holder.modeView=(TextView) view
                        .findViewById(R.id.tv_block_mode);
                holder.iv_delete=(ImageView) view.findViewById(R.id.iv_delete);
                view.setTag(holder);
                System.out.println("创建新的View对象"+position);
            }else{
                view=convertView;
                holder=(ViewHolder) view.getTag();
                System.out.println("使用历史View对象"+position);
            }
            
            
            holder.phoneView.setText(infos.get(position).get("phone"));
            switch (infos.get(position).get("mode")) {
            case "1":
                holder.modeView.setText("电话拦截");
                break;
            case "2":
                holder.modeView.setText("短信拦截");
                break;
            case "3":
                holder.modeView.setText("全部拦截");
                break;
            default:
                break;
            }
            //删除条目
            holder.iv_delete.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder builder=new AlertDialog.Builder(CallSmsSafeActivity.this);
                    builder.setTitle("警告");
                    builder.setMessage("是否确认删除?");
                    builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
                        
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            infos.remove(position);
                            myAdapter.notifyDataSetChanged();
                            dao.delete(infos.get(position).get("phone"));
                        }
                    });
                    builder.setNegativeButton("取消", null);
                    builder.show();
                }
            });
            return view;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }

    }
    private EditText blackNumber;
    private CheckBox blockCall;
    private CheckBox blockSms;
    /**
     * 添加黑名单
     * @param v
     */
    public void addCallSmsSafe(View v) {
        AlertDialog.Builder builder=new AlertDialog.Builder(this);
        View view=View.inflate(this, R.layout.dialog_add_safe_sms, null);
        builder.setView(view);
        final AlertDialog alertDialog=builder.show();
        Button submit=(Button) view.findViewById(R.id.bt_submit);
        Button cancel=(Button) view.findViewById(R.id.bt_cancel);
        blackNumber=(EditText) view.findViewById(R.id.et_black_number);
        blockCall=(CheckBox) view.findViewById(R.id.cb_block_call);
        blockSms=(CheckBox) view.findViewById(R.id.cb_block_sms);
        
        submit.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                String phone=blackNumber.getText().toString().trim();
                String mode = "3";
                if(TextUtils.isEmpty(phone)){
                    Toast.makeText(CallSmsSafeActivity.this, "请输入手机号码", 0).show();
                }
                if(blockCall.isChecked()&&blockSms.isChecked()){
                    //全部拦截
                    mode="3";
                }else if(blockCall.isChecked()){
                    //电话拦截
                    mode="1";
                }else if(blockSms.isChecked()){
                    //短信拦截
                    mode="2";
                }else{
                    Toast.makeText(CallSmsSafeActivity.this, "请勾选拦截模式", 0).show();
                }
                dao.add(phone, mode);
                Map<String, String> info=new HashMap<String, String>();
                info.put("phone", phone);
                info.put("mode", mode);
                infos.add(0,info);
                myAdapter.notifyDataSetChanged();
                alertDialog.dismiss();
            }
        });
        cancel.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-05-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档