2016-10-14 2 views
0

Я разработал приложение, которое обеспечивает доступ к контактам через Content Resolver. Он отображает все контакты в одном списке, даже дублированные контакты также отображаются в одном списке. Но я хочу показать дубликаты контактов в другом списке так что я могу легко удалить их в соответствии с моим желанием. Пожалуйста, помогите мне. Ill будьте благодарны вам сердечно. Вот пример кода.как найти дубликаты контактов в списке View

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); 

} 
} 

ответ

1

Я предлагаю вам добавить всех контактов в список и удалить дубликат по hashset. потому что hashset не позволяет дублировать элементы.

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

Можете ли вы изменить мой код, Ill be thannkful –

+0

Я не понял этот код и куда его поместить. добросердечно измените мой код. –

+0

Я изменил свой ответ –

Смежные вопросы