5.3 添加移除黑名单号码

编程入门 行业动态 更新时间:2024-10-27 10:24:40

5.3  添加<a href=https://www.elefans.com/category/jswz/34/1767470.html style=移除黑名单号码"/>

5.3 添加移除黑名单号码

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 添加移除黑名单号码

本文发布于:2023-06-21 07:14:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/813756.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:移除   黑名单   号码

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!