2012-12-06 92 views
3

我想添加我的聯繫人從listview到android中的聯繫人頁面..我可以添加聯繫人。但是,我如何避免重複?如何避免重複同時在android中保存聯繫人

例如: 我有一個名稱爲Jony和編號爲123的條目。如果再次按下同一個聯繫人,則不應將其添加到聯繫人頁面。如果它已經在聯繫人頁面中,我不想添加聯繫人。我怎樣才能做到這一點?

這裏是我的代碼:

import_btn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      ArrayList<HashMap<String, String>> newArrayList=null; 

      //ArrayList<HashMap<String, String>> selectedContact=null; 
      ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 

      newArrayList=ContactImportAdapter.contactsArrayList; 

      for(int i=0;i<newArrayList.size();i++) 
      { 

       String name; 
       String number; 
       String mail; 

      name=newArrayList.get(i).get("import_viewContactName"); 
      number=newArrayList.get(i).get("import_viewContactNumber"); 
      mail=newArrayList.get(i).get("import_viewContactMail"); 

      int rawContactInsertIndex = ops.size(); 

       ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) 
        .withValue(RawContacts.ACCOUNT_TYPE, null) 
         .withValue(RawContacts.ACCOUNT_NAME, null).build()); 

       ops.add(ContentProviderOperation 
         .newInsert(Data.CONTENT_URI) 
         .withValueBackReference(Data.RAW_CONTACT_ID,rawContactInsertIndex) 
         .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
         .withValue(StructuredName.DISPLAY_NAME, name) // Name of the person 
         .build());     


      ops.add(ContentProviderOperation 
         .newInsert(Data.CONTENT_URI) 
         .withValueBackReference(
           ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
           .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) 
           .withValue(Phone.NUMBER, number) // Number of the person 
           .withValue(Phone.TYPE, Phone.TYPE_MOBILE).build()); 


       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) 
         .withValue(ContactsContract.Data.MIMETYPE, 
           ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
         .withValue(ContactsContract.CommonDataKinds.Email.DATA, mail) 
         .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK) 
         .build()); 


    //Toast.makeText(getApplicationContext(), "Contact Added Successfully", Toast.LENGTH_SHORT).show();  
      } 

      newArrayList.clear(); 
       try 
       { 
        ContentProviderResult[] res = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
       } 
       catch (RemoteException e) 
       { 
        // error 
       } 
       catch (OperationApplicationException e) 
       { 
        // error 
       } 



     } 
    }); 

回答

1

首先要避免duplicacy你必須首先調用數據庫,並檢查該號碼,如果號碼存在,那麼你就可以搞定。

+0

沒有數據庫如何避免重複..我正在使用webservice導出我的聯繫人 – user1835052

+0

你必須保持記錄或聯繫一些在應用程序中的地方,並且當每次你fetech或添加一個新的聯繫人時,它會比較你的記錄聯繫人。 例如,您的聯繫人爲1234,3423,5674,2345,現在他們被保存在某些位於arraylist或某個數據庫中的位置,這取決於您。現在,當你添加例如1234,那麼這個數字將記錄你的記錄,如果有匹配,你不會添加聯繫人。 – zapbuild

+0

我將所有的聯繫人保存在Arraylist ..但我無法比較該數組列表..該數組列表是在不同的類。當我調用該數組列表時,它返回空值... – user1835052

相關問題