[android] 手機衛士黑名單功能(ListView結合SQLite增刪改)

來源:互聯網
上載者:User

標籤:

修改介面,在頂部橫條上增加一個添加按鈕,點擊開啟一個自訂對話方塊,輸入電話號碼和攔截模式儲存到資料庫

自訂對話方塊看這篇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;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();            }        });    }}

[android] 手機衛士黑名單功能(ListView結合SQLite增刪改)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.