2016-10-14 5 views
0

Ich habe App entwickelt, die Kontakte über Content Resolver.It zugreifen zeigen alle Kontakte in einer Listenansicht sogar doppelte Kontakte auch in der gleichen Listenansicht angezeigt Aber ich möchte doppelte Kontakte in anderen Liste anzeigen sehen, damit ich sie nach meinem Wunsch einfach löschen kann. Bitte hilf mir. Ich werde Ihnen herzlich danken. Hier ist ein Beispielcode.So finden Sie doppelte Kontakte in der Liste Anzeigen

package com.example.contentprovider; 

import android.content.ContentResolver; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.MatrixCursor; 
import android.provider.ContactsContract; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 


public class MainActivity extends AppCompatActivity { 

// Cursor Adapter for storing contacts data 
SimpleCursorAdapter adapter; 

// List View Widget 
ListView lvContacts; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Init ListView 
    lvContacts = (ListView) findViewById(R.id.lvContacts); 

    // Initialize Content Resolver object to work with content Provider 
    ContentResolver cr = getContentResolver(); 

    // Read Contacts 
    Cursor c = cr.query(ContactsContract.Contacts.CONTENT_URI, 
      new String[] { ContactsContract.Contacts._ID, 
        ContactsContract.Contacts.DISPLAY_NAME }, null, null, 
      null); 


    // Attached with cursor with Adapter 
    adapter = new SimpleCursorAdapter(this, R.layout.row, c, 
      new String[] { ContactsContract.Contacts.DISPLAY_NAME }, 
      new int[] { R.id.lblName }); 

    // Display data in listview 
    lvContacts.setAdapter(adapter); 

} 
} 

Antwort

1

Ich würde vorschlagen, dass Sie den Kontakt in die Liste hinzufügen und entfernen Sie doppelte von Hashset. Weil das Hashset keine doppelten Elemente zulässt.

psedo code:--- 
1. Once get all object like name,phone number from contentResolver then add those string objet into arraylist 
2. After that pass taht list to hashset so duplicate will be removed. 

ArrayList<String> values=new ArrayList<String>(); 
HashSet<String> hashSet = new HashSet<String>(); 
hashSet.addAll(values); 
values.clear(); 
values.addAll(hashSet); 
it might be helpful for you . 
+0

können Sie meinen Code ändern, sein Ill thannkful –

+0

ich diesen Code nicht verstanden und wo es zu setzen. ändere meinen Code. –

+0

Ich änderte meine Antwort –

Verwandte Themen