`
feifei_lee
  • 浏览: 44073 次
  • 性别: Icon_minigender_2
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

ProgressDialog和AsyncTask的一个例子,一次删除多个联系人

阅读更多
选择了要删除的联系人,uriData; 调用DeleteMultipleContactResult(uriData);
private int num;
private void  DeleteMultipleContactResult(ArrayList<Uri> uriData){
    	num = uriData.size();//获取要删除联系人的个数
    	
    	final DialogInterface.OnClickListener deleteMultipleClickListener =
            new DialogInterface.OnClickListener() {
                 public void onClick(DialogInterface dialog,int which){
                	 connect(uriData);
                     }
        	};
        	
        //show dialog.if ok,then delete multiple contacts 
        new AlertDialog.Builder(this)
            .setTitle(R.string.deleteConfirmation_title)
            .setIcon(android.R.drawable.ic_dialog_alert)
            .setMessage(R.string.multipleContactDeleteConfirmation)
            .setNegativeButton(android.R.string.cancel, null)
            .setPositiveButton(android.R.string.ok, deleteMultipleClickListener)
            .show();
        
    }
    
    private void connect(ArrayList<Uri> uriData){
    	DeleteMultipleTask Task = new DeleteMultipleTask(this);
   	 	Task.execute(uriData);
    }
    
    class DeleteMultipleTask extends AsyncTask<ArrayList<Uri>,Integer,String>{
    	boolean mCanceled = false;
    	ProgressDialog dialog;
    	public DeleteMultipleTask(Context context){
    		dialog = new ProgressDialog(context);//删除过程中显示进度条
    		dialog.setButton(getString(android.R.string.cancel), new DialogInterface.OnClickListener(){
    			public void onClick(DialogInterface dialog,int i){
    				dialog.dismiss();
    				mCanceled = true;
    			}
    		});
    		dialog.setCancelable(false);
    		dialog.setMax(num);
    		dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    		dialog.setTitle(R.string.dialog_delete_multiple);
    		dialog.show();
    	}
    	
		@Override
		protected String doInBackground(ArrayList<Uri>... uriDatas) {
			// TODO Auto-generated method stub
			ArrayList<Uri> uriData = uriDatas[0];
			ContentResolver resolver = getContentResolver();
             for(int i = 0; i < num; i++){
            	 if(!mCanceled){
            		 mSelectedContactUri = uriData.get(i);
            		 resolver.delete(RawContacts.CONTENT_URI,
            				 RawContacts.CONTACT_ID + "=" + ContentUris.parseId(mSelectedContactUri),null);
            		 dialog.incrementProgressBy(1);
            	 }else{
            		 break;
            	 }
             }
             return null;
		}
		
		protected void onPostExecute(String result){
			dialog.dismiss();
		}
    }

 

分享到:
评论

相关推荐

    Android 线程AsyncTask逐步在list中加入条目

    在这个"Android 线程AsyncTask逐步在list中加入条目"的例子中,我们首先会创建一个`AsyncTask`子类,如`LoadDataTask`,继承自`AsyncTask`。`doInBackground()`方法将用于生成数据(可能是从网络请求或本地数据库...

    03_AsyncTask_异步方法操作之进度条

    下面是一个简单的示例,展示如何在`AsyncTask`中使用进度条: ```java public class ProgressTask extends AsyncTask, Integer, String&gt; { private ProgressBar progressBar; private Context context; public...

    android 多线程 下载 更新 ui 例子

    2. **AsyncTask**:另一种常见的实现方式是使用AsyncTask,它是一个轻量级的异步任务类,特别适合于短时间的后台操作和UI更新。不过,由于AsyncTask的限制(如任务数量限制),在处理大量或持续的后台任务时,它可能...

    ProgressDialogApplication.rar

    在Android开发中,ProgressDialog是一个非常常见的组件,它用于在用户执行长时间操作时显示一个带有进度指示的对话框,比如文件下载、数据加载等。在这个"ProgressDialogApplication"项目中,我们将探讨如何在...

    android 例子

    总结,"Android 例子"可能是一个关于如何在Android应用中实现文件下载功能的示例,涵盖了网络通信、多线程、UI更新、文件存储等多个核心知识点。通过学习这个例子,开发者能深入理解Android应用开发的关键技术和最佳...

    包含几种常用功能的小例子

    当应用程序执行耗时操作(如网络请求)时,为提高用户体验,通常会显示一个ProgressDialog来告知用户程序正在运行并等待完成。开发者需要在代码中创建ProgressDialog实例,设置其消息和样式,然后在需要时显示和关闭...

    Android使用AsyncTask下载图片并显示进度条功能

    在`AsyncTaskActivity2`中,我们首先初始化UI元素,包括一个下载按钮(`btnDown`)和一个用于显示图片的`ImageView`(`ivImage`)。我们还创建了一个`ProgressDialog`对象(`dialog`)来显示下载进度。 当用户点击...

    详解Android App中的AsyncTask异步任务执行方式

    以下是一个简单的使用AsyncTask加载网络图片的例子: ```java public class LoadImageTask extends AsyncTask, Integer, Bitmap&gt; { private ImageView imageView; private ProgressDialog progressDialog; ...

    Android带进度条的下载图片示例(AsyncTask异步任务)

    需要注意的是,`AsyncTask`并不是线程安全的,不建议在同一个`Activity`中同时执行多个`AsyncTask`实例,因为这可能导致并发问题。对于复杂的异步操作或需要管理多个任务的情况,可能需要使用更强大的解决方案,如`...

    WheelProgressDialog.zip

    "WheelProgressDialog"就是一个自定义View的例子,它扩展了基础的ProgressDialog类,提供了更个性化的显示效果。 2. **Android Layouts**: 自定义View通常涉及到布局的设计。开发者可能使用XML来定义View的结构,...

    漂亮的anroid登陆界面 可保存密码

    总的来说,这个项目涵盖了Android UI设计、本地数据存储、网络请求、异步任务、数据验证和安全性等多个方面,是一个全面展示Android应用开发技术的好例子。开发者可以从中学到如何创建用户友好的界面,实现安全的...

    Android 之 对话框总结

    1. AlertDialog:这是最常用的对话框类型,通常包含标题、消息内容和一个或多个按钮。通过AlertDialog.Builder类来创建和定制,可以设置标题、消息、按钮文本以及按钮点击事件。 2. ProgressDialog:通常用于显示...

    Android 远程登录含有loading登录效果源码.rar

    通过分析这个压缩包提供的源码,开发者可以学习到如何在Android应用中创建一个完整的远程登录系统,包括UI设计、网络请求、加载效果以及错误处理等多个关键方面。这对于初学者和有经验的开发者来说都是一个宝贵的...

    Android基于GeolocationAPI的基站定位

    综上所述,Android基于GeolocationAPI的基站定位涉及到网络通信、JSON解析、UI更新以及权限管理等多个方面,需要开发者对Android系统和网络编程有深入理解。在实际应用中,还需要考虑到不同设备、网络环境的差异,...

    android下载带有进度条

    总之,"android下载带有进度条"的示例教程涵盖了网络请求、文件保存、UI更新等多个Android开发的基础知识点,对于初学者来说是一个很好的实践项目,有助于提升他们的编程技能。通过实际操作,开发者可以更好地理解和...

    android解压zip文件

    5. **关闭条目和流**:每次解压完一个条目后,记得调用`ZipInputStream.closeEntry()`关闭当前条目,最后使用`close()`方法关闭`ZipInputStream`和`OutputStream`,以释放资源。 以下是一个简单的解压示例代码片段...

    android通过google api获取天气信息示例

    3. **HTTP请求**:在示例代码中,通过`URL`、`openStream()`和`InputStreamReader`创建一个HTTP GET请求,获取天气数据。`URLEncoder.encode(city)`用于对城市名进行URL编码,防止特殊字符导致的错误。 4. **XML...

Global site tag (gtag.js) - Google Analytics