andorid 练习之黑名单

activity_mian.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="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.hanqi.blacklist.MianActivity"
    android:orientation="vertical">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@android:id/list"
        >
    </ListView>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@android:id/empty"
        android:layout_weight="1"
        android:gravity="center"
        android:text="还没有一个黑名单"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="添加"
        android:onClick="bt1_onclick"/>
</LinearLayout>

DBHelper.java

package com.hanqi.blacklist;

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_nubmer varchar)");

        Log.e("TAG","onCreate");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

BlackNumber.java

package com.hanqi.blacklist;

/**
 * Created by Administrator on 2016/4/15.
 */
public class BlackNumber  {
    private long id;
    private String phonenumber;

    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() {
    }

    public BlackNumber(long id, String phonenumber) {
        this.id = id;
        this.phonenumber = phonenumber;
    }

    public BlackNumber(String phonenumber) {
        this.phonenumber = phonenumber;
    }

    @Override
    public String toString() {
        return "BlackNumber{" +
                "id=" + id +
                ", phonenumber=‘" + phonenumber + ‘\‘‘ +
                ‘}‘;
    }
}

BlackNumberDAO.java

package com.hanqi.blacklist;

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 sql = dbHelper.getWritableDatabase();
        //要添加数据的键值对集合
        ContentValues contentValues =new ContentValues();

        contentValues.put("phone_number",blackNumber.getPhonenumber());
        //数据添加
        sql.insert("black_number",null,contentValues);
        //关闭数据库
        sql.close();

        Log.e("TAG","添加数据成功");

    }
    //删除
    public void delete(long id)
    {
        //获取数据库连接
        SQLiteDatabase sql = dbHelper.getWritableDatabase();

        //数据删除
        sql.delete("black_number","_id=?",new String[]{String.valueOf(id)});
        //关闭数据库
        sql.close();

        Log.e("TAG","删除数据成功");

    }
    //改
    public void update(BlackNumber blackNumber)
    {
        //获取数据库连接
        SQLiteDatabase sql = dbHelper.getWritableDatabase();
        //要添加数据的键值对集合
        ContentValues contentValues =new ContentValues();

        contentValues.put("phone_number", blackNumber.getPhonenumber());
        //数据修改
        sql.update("black_number",contentValues,"_id=?",new String[]{String.valueOf(blackNumber.getId())});
        //关闭数据库
        sql.close();

        Log.e("TAG","修改数据成功");

    }
    //查
    //用list<实体类的实例>返回数据
    public List<BlackNumber> getAll()
    {
        List<BlackNumber> rtn = new ArrayList<BlackNumber>();
        //查询数据

        //获取数据库连接
        SQLiteDatabase sql = dbHelper.getWritableDatabase();
        //返回游标
        Cursor cursor = sql.query("black_number", null, null, null, null, null, "_id desc");
        //移动游标,获取数据
        while (cursor.moveToNext())
        {
            //构造实体类的实例,放入List
            rtn.add(new BlackNumber(cursor.getLong(0),cursor.getString(1)));

        }
        Log.e("TAg","记录条数 = "+cursor.getCount());

        sql.close();
        return rtn;
    }

}

MianActivity.java

package com.hanqi.blacklist;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.InputType;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
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 MianActivity extends ListActivity {

    private ListView lv1;
    private List<BlackNumber> data;
    private BlackListAdapter dla;
    private int position;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mian);
        //lv1 = (ListView)findViewById(R.id.lv_1);
        lv1 = getListView();
        //获取数据集合
        BlackNumberDAO bd = new BlackNumberDAO(this);

        data = bd.getAll();

        dla = new BlackListAdapter();
        //设置适配器
        lv1.setAdapter(dla);
        //设置上下文菜单的监听
        lv1.setOnCreateContextMenuListener(this);
    }
    //上下文菜单被点击
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        final BlackNumber bn =data.get(position);
        switch (item.getItemId())
        {
            case 0://修改
                final EditText et = new EditText(this);
                et.setInputType(InputType.TYPE_CLASS_PHONE);
                et.setText(bn.getPhonenumber());
                //弹出对话框
                new AlertDialog.Builder(this)
                        .setTitle("修改黑名单")
                        .setView(et)
                        .setNeutralButton("取消",null)
                        .setPositiveButton("保存", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                //获取修改后的值
                                bn.setPhonenumber(et.getText().toString());
                                //执行数据库修改操作
                                BlackNumberDAO  bnd = new BlackNumberDAO(MianActivity.this);

                                bnd.update(bn);
                                //更新集合

                                //bn和data里面的对象,指向同一个内存地址
                                //如果bn 被修改了, data里面的对象也同时
                                //这就是引用类型的特点
                                //通知刷新列表
                                dla.notifyDataSetChanged();
                                Toast.makeText(MianActivity.this, "修改成功", Toast.LENGTH_SHORT).show();
                            }
                        })

                        .show();
                break;
            case 1://删除
                BlackNumberDAO bd = new BlackNumberDAO(this);

                //需要id 数据库删除了
                bd.delete(bn.getId());
                //刷新界面
                data.remove(position);
                //通知刷新
                dla.notifyDataSetChanged();
                break;

        }
        return super.onContextItemSelected(item);

    }

    //创建上下文菜单
    public void onCreateContextMenu(ContextMenu menu,View v,ContextMenu.ContextMenuInfo menuInfo)
    {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, 0, 0, "修改");

        menu.add(0,1,1,"修改");
        //获取长按的适配器信息
        AdapterView.AdapterContextMenuInfo acm = (AdapterView.AdapterContextMenuInfo)menuInfo;
        position=acm.position;
    }
    //列表的适配器
    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) {
            //判断可复用的视图是否为空
            if(convertView == null)
            {
                //获取视图
                convertView = View.inflate(MianActivity.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.setLayoutParams(new ActionBar.LayoutParams());
        editText.setInputType(InputType.TYPE_CLASS_PHONE);
        //构造在定义对话框
        new AlertDialog.Builder(this)
                .setTitle("添加黑名单")
                .setView(editText)
                .setNeutralButton("取消",null)
                .setPositiveButton("保存", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //构造实体类
                        BlackNumber blackNumber = new BlackNumber(editText.getText().toString());
                        //调用DAO类,保存数据
                        BlackNumberDAO blackNumberDAO = new BlackNumberDAO(MianActivity.this);

                        blackNumberDAO.insert(blackNumber);
                        //添加数据到集合数据集合的顶部
                        data.add(0,blackNumber);
                        //通知适配器刷新ListView
                        dla.notifyDataSetChanged();
                        Toast.makeText(MianActivity.this, "数据保存成功", Toast.LENGTH_SHORT).show();
                    }
                })
                .show();
    }
}
时间: 2024-08-03 07:58:19

andorid 练习之黑名单的相关文章

[WebServer] Tomcat 配置访问限制:访问白名单和访问黑名单

前言: 昨天配置了 Tomcat 服务器运行 PHP 的环境,但是通过观察 Tomcat 这几天的日志发现,有很多莫名其妙的 IP 访问主机下莫名其妙的地址,如:/80./testproxy.php./cache/global/img/gs.gif.CONNECT check.best-proxies.ru:80 等等,后来通过搜索这些访问 IP 得知是进行端口扫描的地址,为了防止这些 IP 的扫描,进一步保证服务器的安全和稳定,可以通过配置 Tomcat 的 server.xml 限制一些 I

华为NE40黑名单与全局策略

据运维同事反馈,华为NE40的黑名单在实际配置中没有生效.恰巧,公司近日又购置了一批NE40设备.因此,黑名单这个功能和一些需要测试的功能一同测试了下. 黑名单 配置黑名单,将不安全的报文依据ACL规则加入到黑名单中,以便后续对其提供较小的带宽. 如果用户认为某些IP的报文不应该被上送到CPU,或者认定某些报文是非法报文,可以通过设置ACL规则将其加入到黑名单中,将之丢弃.黑名单中的用户都需要手动配置,没有缺省用户. 基础配置 1.配置黑名单 2.调用策略 测试过程 1.ping测试 测试过程中

基于TINY4412的Andorid开发-------简单的LED灯控制【转】

本文转载自:http://www.cnblogs.com/pengdonglin137/p/3857724.html 基于TINY4412的Andorid开发-------简单的LED灯控制 阅读目录(Content) 一.编写驱动程序 二.编写代码测试驱动程序 三.编写HAL代码 四.编写Framework代码 五.编写JNI代码 六.编写App 参考资料: <Andriod系统源代码情景分析> <嵌入式Linux系统开发完全手册_基于4412_上册> 作者:彭东林 邮箱:[em

代码可读性艺术在Andorid中的体现

前言 最近接手的一些项目,不同的人编码风格迥异,类里的变量.方法的定义穿插,注释极为稀少,更有一些变量和方法的命名非常近似,例如表示播放队列的"playQueue"和表示歌单的"playList",wtf? 这不是一个意思吗?一些回调的时机也不能直观的看出来,通常需要debug调试多次;multi project之间值的传递.广播跨进程的发送.服务的开启和绑定,一句注释都没有,不知道过了这么久, 这些代码的同事,还能很快看懂自己写的东西吗?这简直让人抓狂啊,于是乎,

android140 360 黑名单 启动service和分页加载

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView style="@style

用nslookup查看郵件服務器的IP是否被Spam Advisory列入黑名单

网上有很多spam advisory数据库,例如spamhaus之类的. 例如,要查询IP 1.2.3.4 是否被ahbl.org列入黑名单,可以用下列命令 nslookup 4.3.2.1.dnsbl.ahbl.org 如果返还的结果是Non-existent domain,说明没有问题 如果返还的结果是127.0.0.x,说明被列入了黑名单,x有可以能是1-255的数值,具体原因就因数据库而异了. 当然,有些数据库提供网页查询,也很方便. 用命令查看的好处是可以写脚本同时查看多个数据库. 附

【andorid基础篇】数据库的创建以及增删改查

I,安卓下的数据库 安卓下使用的数据库是SQLite,安卓为我们提供的API是SQLiteOpenHelper. 1,创建一个数据库 1)写一类去继承抽象类SQLiteOpenHelper,我们需要复写相关的方法: 1 public WcxSQLite(Context context, String name, CursorFactory factory,int version) { super(context, name, factory, version); 3 } 4 5 public v

andorid手机电脑操作

之前一直使用androidscreencast在pc上对手机进行操作,好久都没用了,前些天再次用的时候,提示如下: 决定还是自己写一个吧,因为7月份要做一个小分享,打算讲一些android的东西,需要在电脑上显示手机这边的画面,提供一定的操作. 花了一点时间做好了,给大家截一个图,代码放在github(https://github.com/androiddevelop/AndroidScreenshot)上了,需要的自己clone一下了. andorid手机电脑操作,布布扣,bubuko.com

python——ip加入nginx黑名单

需求:因nginx做了防刷机制之后, error.log 会出现ip刷服务器,也被nginx挡掉了,并没有具体刷到后端服务器,但error.log多次出现ip,现计划把出现5次以上的ip写入黑名单. nginx log日志格式: 2016/09/05 01:11:07 [info] 1354#0: *11981355139 limiting connections by zone "limit", client: 111.164.58.3, server: api.test.cn, r