Android之黑名单的制作【JAVA】
来源:互联网 发布:linux网络重启命令 编辑:程序博客网 时间:2024/05/15 23:51
黑名单的制作需要用到ListView,数据库存储,对数据进行操作,还有Dialog,适配器
1.界面布局:上面有ListView,界面下方有一个添加按钮,可以向ListView列表中添加数据,当无数据时ListView隐藏。显示“还没有一个黑名单”,此时的ListView和TextView不能同时存在,So,其id必须用系统特定的。
<ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > </ListView> <TextView android:id="@android:id/empty" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center" android:text="还没有一个黑名单" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="add" android:text="添 加" />
2.black_number表对应的类
package com.example.sqlite;/** * black_number表对应的类 * @author Xiaocici * */public class BlackNumber {private int id;private String number;public BlackNumber(int id, String number) {super();this.id = id;this.number = number;}@Overridepublic String toString() {return "BlackNumber [id=" + id + ", number=" + number + "]";}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}}
3.数据库操作的帮助类
package com.example.sqlite;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;/** * 数据库操作的帮助类 * @author Xiaocici * */public class DBHelper extends SQLiteOpenHelper {public DBHelper(Context context) {super(context, "black.db", null, 1);// TODO Auto-generated constructor stub}@Overridepublic void onCreate(SQLiteDatabase db) {//创建表db.execSQL("create table black_number(_id integer primary key autoincrement,number varchar)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}}
4.操作black_number表的DAO类
package com.example.sqlite;import java.util.ArrayList;import java.util.List;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.util.Log;/** * 操作black_number表的DAO类 * @author Xiaocici * */public class BlackNumberDao {private DBHelper dbhelper;public BlackNumberDao(Context context) {dbhelper = new DBHelper(context);}/* * 添加一条记录 */public void add(BlackNumber blackNumber){//1.得到连接SQLiteDatabase database = dbhelper.getReadableDatabase();//2.执行insert insert into black_number (number) values(XXX)ContentValues values = new ContentValues();values.put("number", blackNumber.getNumber());long id = database.insert("black_number", null, values);Log.i("TAG", "id = "+ id);//设置IDblackNumber.setId((int) id);//3.关闭database.close();}/* * 根据ID删除一条记录 */public void deleteById(int id){//1.得到连接SQLiteDatabase database = dbhelper.getReadableDatabase();//2.执行delete delete from black_number where _id=idint deleteCount = database.delete("black_number", "_id=?", new String[]{id+""});Log.i("TAG", "deleteCount="+ deleteCount);//3.关闭database.close();}/** * 更新一条记录 */public void update(BlackNumber blackNumber){//1.得到连接SQLiteDatabase database = dbhelper.getReadableDatabase();//2.执行update update black_number set number=xxx where _id=id;ContentValues values = new ContentValues();values.put("number", blackNumber.getNumber());int updateCount = database.update("black_number", values, "_id="+blackNumber.getId(), null);Log.i("TAG", "updateCount="+ updateCount);//3.关闭database.close();}/** * 查询所有记录封装成List<BlackNumber> */public List<BlackNumber> getAll(){List<BlackNumber> list = new ArrayList<BlackNumber>();//1.得到连接SQLiteDatabase database = dbhelper.getReadableDatabase();//2.执行query select * from black_number Cursor cursor = database.query("black_number", null, null, null, null, null, "_id desc");//3.从cursor中取出所有数据并封装到List中while(cursor.moveToNext()){//idint id = cursor.getInt(0);//numberString number = cursor.getString(1);list.add(new BlackNumber(id,number));}//3.关闭cursor.close();database.close();return list;}}
5.菜单监听事件
public boolean onContextItemSelected(MenuItem item) {//得到对应的BlackNumber对象final BlackNumber blackNumber = data.get(position);switch (item.getItemId()) {case 1://更新//1.显示更新的DialogshowUpdateDialog(blackNumber);break;case 2://删除new AlertDialog.Builder(this).setTitle("确定删除???").setPositiveButton("Yes", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub//1).删除数据表对应数据dao.deleteById(blackNumber.getId());//2).删除List对应的数据data.remove(position);//3).通知更新列表adapter.notifyDataSetChanged();}}).setNegativeButton("No", null).show();break;default:break;}return super.onContextItemSelected(item);}6.更改数据函数
/** * 显示更新的Dialog * @param blackNumber */private void showUpdateDialog(final BlackNumber blackNumber) {final EditText editText = new EditText(this);editText.setHint(blackNumber.getNumber());new AlertDialog.Builder(this).setTitle("更新黑名单").setView(editText).setPositiveButton("更新", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//1)更新List对应数据String number = editText.getText().toString();blackNumber.setNumber(number);//2)更新数据表对应的数据dao.update(blackNumber);//3)通知更新列表adapter.notifyDataSetChanged();}}).setNegativeButton("取消", null).show();}
7.添加数据函数
public void add(View v){final EditText editText = new EditText(this);editText.setHint("输入黑名单号");new AlertDialog.Builder(this).setTitle("添加黑名单").setView(editText).setPositiveButton("添加", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//1.保存数据表中String number = editText.getText().toString();boolean flag = false;for(int i=0;i<data.size();i++){if(data.get(i).getNumber().equals(number)){flag = true;break;}}if (!flag) {BlackNumber blackNumber = new BlackNumber(-1,number);dao.add(blackNumber);// 2.保存数据到List// data.add(blackNumber);//已经有ID了data.add(0, blackNumber);// 已经有ID了// 3.通知更新列表adapter.notifyDataSetChanged();}else{Toast.makeText(MainActivity.this, "该number已存在", 0).show();}}}).setNegativeButton("取消", null).show();}
8.该ListView所需的适配器
class BlackNumberAdapter extends BaseAdapter {@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int position) {return data.get(position);}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubif(convertView==null){convertView = View.inflate(MainActivity.this, android.R.layout.simple_list_item_1, null);}BlackNumber blackNumber = data.get(position);TextView textView = (TextView) convertView.findViewById(android.R.id.text1);textView.setText(blackNumber.getNumber());return convertView;}}
0 0
- Android之黑名单的制作【JAVA】
- android 黑名单的拦截
- Android之——手机黑名单的实现
- 黑名单之Listview的优化
- android中黑名单的实现
- android安全卫士实现黑名单管理:黑名单号码的删除修改
- Android开发之黑名单来电自动挂断
- Android BroadcastReceiver之短信拦截(黑名单)
- 黑名单拦截之SQLite的用法
- Android黑名单挂断电话的操作
- Android Wi-Fi 查看黑名单的方法
- 初学Android,手机管理器之自动挂断黑名单的来电(六十四)
- 初学Android,手机管理器之自动挂断黑名单的来电(六十四)
- XMPP之置顶黑名单
- SparkStreaming之黑名单过滤
- android-实现黑名单拦截
- Android Xmpp 黑名单
- Android黑名单来电管理
- C语言 一维数组
- 注释:二叉树的递归建立+二叉树非递归建立
- 开源数据可视化工具(For Apache Kylin)使用说明
- RX操作符之过滤操作一(debounce、filter、ofType、takeLast、last、lastOrDefault、takeLastBuffer、skip、skipLast、take)
- (NYoj 110) 剑客决斗 --DP
- Android之黑名单的制作【JAVA】
- Android开发中,那些让你相见恨晚的方法、类或接口
- 【特征匹配】BRIEF特征描述子原理及源码解析
- hdu1874 畅通工程续 单源最短路算法——Dijkstra
- zzuacm集训day3
- JavaScript实现拖拽预览,AJAX小文件上传
- 【专题训练】【递推算法】 单峰排列 解题报告
- MaterialEditText 一个灰常漂亮的强大EditText
- 详解cocos2dx状态机