2016-10-14 28 views
0

私はコンテンツレゾルバを介して連絡先にアクセスするアプリを開発しました。同じリストビュー内のすべての連絡先を表示します。同じリストビューにも同じ連絡先を表示します。しかし、私の希望に応じて簡単に削除することができます。親切に私を助けてください。あなたに心から感謝します。サンプルコードです。リスト内の連絡先の重複を見つける方法

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

リストにすべての連絡先を追加し、ハッシュセットで重複を削除することをお勧めします。ハッシュセットでは重複要素が許可されていないためです。

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

私のコードを変更できますか悪いですか –

+0

私はこのコードをどこに置くべきか分かりませんでした。親切に私のコードを変更してください。 –

+0

私の答えを変更しました –

関連する問題