5.3 添加移除黑名单号码
来源:互联网 发布:vc socket编程 编辑:程序博客网 时间:2024/06/04 18:53
1.点击添加按钮显示自定义对话框布局
2.给自定义对话框中控件设置点击事件
3.刷新界面要移除集合中对应的数据
public class CallSmsSafeActivity extends Activity {
private String TAG= "CallSmsSafeActivity";
private ListView lv_callsms_safe;
private BlackNumberDao dao;
private BlackNumberBean blackNumberBean;
private List<BlackNumberBean> numberList ;
private TextView tv_number;
private TextView tv_mode;
private ImageView iv_delete;
private MyAdapter adpter;
private LinearLayout loading;
private int currentNumber=0; //分页参数
private int maxNumber=20;
private int totalCount;
private boolean loadingflag;
/**
* 创建消息处理机制
*/
private Handler handler= new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log. i(TAG , "主线程跟新界面" );
loading.setVisibility(View. GONE); //加载到布局时移除
if( adpter== null){
adpter= new MyAdapter();
lv_callsms_safe.setAdapter( adpter);
} else{
//复用旧的数据适配器,通知数据适配器数据跟新了
adpter.notifyDataSetChanged();
loadingflag= false; //标记已加载完
}
}
};
/**
* Activity创建时
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_callsms_safe);
lv_callsms_safe=(ListView) findViewById(R.id.lv_callsms_safe );
loading=(LinearLayout) findViewById(R.id. loading);
loading.setVisibility(View. VISIBLE); //加载布局可见
dao= new BlackNumberDao( this); //首次加载数据
fillDate();
totalCount= dao.getMaxNumber();
Log. i(TAG , "数据库总条目数:" +totalCount );
//给lv 注册滚动监听事件
lv_callsms_safe.setOnScrollListener( new OnScrollListener() {
// 滚动状态发生改变的时候 调用的方法
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case OnScrollListener. SCROLL_STATE_IDLE: // listview静止状态
// 获取最后一个可见条目对应的集合里面数据的位置. 从0开始
int lastPosition = lv_callsms_safe.getLastVisiblePosition();
// 获取集合的大小 从1开始
int total = numberList.size();
if (lastPosition == (total - 1)) {
Log. i(TAG , "拖动到了最后一个条目,加载更多的数据..." );
if ( loadingflag) {
Toast. makeText(getApplicationContext(), "正在加载数据.",0).show();
}
currentNumber += maxNumber;
if ( currentNumber >= totalCount ) {
Toast. makeText(getApplicationContext(), "没有更多的数据了",0).show();
return;
}
fillDate();
}
break;
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: //手指触摸滚动
break;
case OnScrollListener. SCROLL_STATE_FLING: //手指已经离开 惯性滑翔状态
break;
}
}
//滚动的时候调用的方法
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}
});
}
/**
* 查询数据
*/
private void fillDate() {
loadingflag= true; //标记正在加载数据
new Thread(){
public void run() {
//numberList=dao.getPraNumberInfo(currentPage, pageSize);
if ( numberList == null) {
numberList = dao.getPraNumberInfo( currentNumber, maxNumber);
} else {
numberList.addAll( dao.getPraNumberInfo( currentNumber, maxNumber));
}
handler.sendEmptyMessage(0);
};
}.start();
}
/**
* 创建适配器
*/
public class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return numberList.size();
}
@Override
public View getView( final int position, View convertView, ViewGroup parent) {
//复用历史缓存view对象,减少内存消耗,防止内存溢出
View view= null;
ViewHolder holder= null;
if(convertView!= null&&convertView instanceof RelativeLayout){ //RelativeLayout:填充view的布局类型
view=convertView;
Log. i(TAG , "复用历史缓存view:" +position);
holder=(ViewHolder) view.getTag(); //复用孩子的id
} else{
view = View. inflate(getApplicationContext(), R.layout.list_callsms_item,null );
Log. i(TAG , "创建新的view对象:" +position);
holder= new ViewHolder(); //初始化view持有者
//只是在创建view的时候去寻找控件,然后把控件的id存起来
holder. tv_number=(TextView) view.findViewById(R.id.tv_number );
holder. tv_mode=(TextView) view.findViewById(R.id.tv_mode );
holder. iv_delete=(ImageView) view.findViewById(R.id.iv_delete );
view.setTag(holder); //将holder存到view中
}
//非常消耗内存
//View view = View.inflate(getApplicationContext(), R.layout.list_callsms_item,null);
blackNumberBean = numberList.get(position);
holder. tv_number.setText( "号码:"+blackNumberBean .getNumber());
String mode= blackNumberBean.getMode();
if( "1".equals(mode)){
holder. tv_mode.setText( "电话拦截");
} else if( "2".equals(mode)){
holder. tv_mode.setText( "短信拦截");
} else if( "3".equals(mode)){
holder. tv_mode.setText( "全部拦截");
}
//给删除图标注册点击事件
holder. iv_delete.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
Log. i(TAG , "删除号码:" +blackNumberBean .getNumber());
dao.delete( blackNumberBean.getNumber());
numberList.remove(position); //集合中移除listview对应的条目
adpter.notifyDataSetChanged(); //刷新界面
}
});
return view;
}
@Override
public Object getItem( int position) {
return null;
}
@Override
public long getItemId( int position) {
return 0;
}
}
/**
* 创建view持有者,将需要找的控件的应用放在 viewholder中
*/
static class ViewHolder{
TextView tv_number;
TextView tv_mode;
ImageView iv_delete;
}
private EditText et_blacknumber;
private RadioGroup gr_mode;
private Button bt_ok;
private Button bt_cancle;
/**
* 添加按钮触发的点击事件
*/
public void addBlackNumber(View view){
AlertDialog.Builder builder= new Builder( this); //创建对话框建设者
final AlertDialog dialog = builder.create(); //创建对话框
//将自定义对话框布局填充到对话框上
View contentView=View. inflate(this, R.layout.dialog_enter_blacknumber , null);
et_blacknumber=(EditText) contentView.findViewById(R.id.et_blacknumber );
gr_mode=(RadioGroup) contentView.findViewById(R.id.radioGroup1 );
bt_ok=(Button) contentView.findViewById(R.id. bt_ok);
bt_cancle=(Button) contentView.findViewById(R.id. bt_cancle);
//给取消按钮设置点击事件
bt_cancle.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
Log. i(TAG , "取消对话框" );
dialog.dismiss();
}
});
//给确定按钮选择点击事件
bt_ok.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
String et_number=et_blacknumber.getText().toString().trim();
if(TextUtils. isEmpty(et_number)){
Toast. makeText(getApplicationContext(), "输入的号码不能为空" , 0).show();
return;
}
if( dao.find(et_number)){ //如果输入的号码已经存在
Toast. makeText(getApplicationContext(), "输入的号码已经在黑名单中" , 0).show();
return;
}
//判断选择的模式
String mode= "3";
switch ( gr_mode.getCheckedRad ioButtonId()) {
case R.id. rb_phone: // 1. 电话拦截
mode= "1";
break;
case R.id. rb_sms: // 2. 短信拦截
mode= "2" ;
break;
case R.id. rb_all: // 3. 全部拦截
mode= "3";
break;
}
//添加黑名单号吗
dao.add(et_number,mode);
//将新添加的黑名单号码添加到集合中,显示到界面上 最上面一个条目
numberList.add(0, new BlackNumberBean(0, et_number, mode));
adpter.notifyDataSetChanged(); // 刷新界面
dialog.dismiss();
}
});
dialog.setView(contentView, 0, 0, 0, 0);
dialog.show();
}
}
- 5.3 添加移除黑名单号码
- 移除BRBL黑名单
- 移除BRBL黑名单
- android安全卫士实现黑名单管理:实现黑名单中添加号码
- 29、通信卫士--添加、删除、修改黑名单号码
- Android融云判断是否用户已经加入黑名单和加入&移除黑名单
- 添加&移除附件
- android安全卫士实现黑名单管理:黑名单号码的删除修改
- android移除号码中的+86及空格
- sendmail添加实时黑名单
- 120.黑名单的添加
- javascript li添加 移除
- 添加/移除子视图
- javascript添加移除class
- CSS样式移除、添加
- jq添加移除元素
- jQuery添加/移除css
- 记hadoop集群黑名单移除节点出现问题及解决
- DAY 9
- CODE 91: Trapping Rain Water
- VC中字体颜色的设置
- Developing a Spring Framework MVC application step-by-step
- OCP-1Z0-053-V12.02-339题
- 5.3 添加移除黑名单号码
- linux 下安装lua
- java中toString的用法
- latex 目录与章节连接
- Nginx Upstream模块源码分析(上)
- INT 21H 指令说明及使用方法
- 5.4 来电黑名单拦截 ,删除呼叫记录
- Cocos2d-x面试题
- 3、检验程序模块化指标---模块化系数-----labview宝典