修改界面,在顶部横条上增加一个添加按钮,点击打开一个自定义对话框,输入电话号码和拦截模式保存到数据库
自定义对话框看这篇http://www.cnblogs.com/taoshihan/p/5370378.HTML
添加记录
调用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
package com.qingguow.mobilesafe;import java.util.HashMap; java.util.List; java.util.Map; androID.app.Activity; androID.app.AlertDialog; androID.app.AlertDialog.Builder; androID.content.DialogInterface; androID.os.Bundle; androID.text.TextUtils; androID.vIEw.VIEw; androID.vIEw.VIEw.OnClickListener; androID.vIEw.VIEwGroup; androID.Widget.BaseAdapter; androID.Widget.button; androID.Widget.CheckBox; androID.Widget.EditText; androID.Widget.ImageVIEw; androID.Widget.ListVIEw; androID.Widget.TextVIEw; androID.Widget.Toast; com.qingguow.mobilesafe.db.ado.BlackNumberAdo;/** * 通讯卫士 * * @author taoshihan * */public class CallSmsSafeActivity extends Activity { private ListVIEw ListvIEw; private List<Map<String,String>> infos; BlackNumberAdo dao; 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; TextVIEw modeVIEw; ImageVIEw iv_delete; } private class MyAdapter BaseAdapter { @OverrIDe int getCount() { Todo auto-generated method stub return infos.size(); } @OverrIDe public VIEw getVIEw(final position,VIEw convertVIEw,VIEwGroup parent) { VIEw vIEw; VIEwHolder holder= VIEwHolder(); if(convertVIEw==null){ vIEw = VIEw.inflate(CallSmsSafeActivity.,R.layout.List_call_sms_safe_item,); 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("短信拦截"case "3": holder.modeVIEw.setText("全部拦截"default: ; } 删除条目 holder.iv_delete.setonClickListener( OnClickListener() { @OverrIDe onClick(VIEw v) { AlertDialog.Builder builder=new AlertDialog.Builder(CallSmsSafeActivity.); builder.setTitle("警告"); builder.setMessage("是否确认删除?"); builder.setPositivebutton("确认", DialogInterface.OnClickListener() { @OverrIDe voID onClick(DialogInterface dialog,1)"> which) { infos.remove(position); myAdapter.notifyDataSetChanged(); dao.delete(infos.get(position).get("phone")); } }); builder.setNegativebutton("取消",1)">); builder.show(); } }); vIEw; } @OverrIDe public Object getItem( position) { return ; } @OverrIDe long getItemID(return 0; } } EditText blackNumber; CheckBox blockCall; CheckBox blockSms; * 添加黑名单 * @param v */ addCallSmsSafe(VIEw v) { AlertDialog.Builder builder=new AlertDialog.Builder(); VIEw vIEw=VIEw.inflate(this,R.layout.dialog_add_safe_sms,1)">); 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( OnClickListener() { @OverrIDe onClick(VIEw v) { String phone=blackNumber.getText().toString().trim(); String mode = "3"; if(TextUtils.isEmpty(phone)){ Toast.makeText(CallSmsSafeActivity.).show(); } if(blockCall.isChecked()&&blockSms.isChecked()){ 全部拦截 mode="3"; }else (blockCall.isChecked()){ 电话拦截 mode="1"(blockSms.isChecked()){ 短信拦截 mode="2"{ Toast.makeText(CallSmsSafeActivity.).show(); } dao.add(phone,mode); Map<String,String> info=new HashMap<String,String>(); info.put("phone" onClick(VIEw v) { alertDialog.dismiss(); } }); }}
总结
以上是内存溢出为你收集整理的[android] 手机卫士黑名单功能(ListView结合SQLite增删改)全部内容,希望文章能够帮你解决[android] 手机卫士黑名单功能(ListView结合SQLite增删改)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)