2016-06-16 3 views
1

私は連絡先のマルチチェックリストビューを作成する必要があります。確認ボタンをクリックすると、データベースにモバイル番号を挿入する必要があります。Multichoice ListView

リストビューのフラグメントのコードは次のとおりです。

public class MonFragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { 
      if (shouldShowRequestPermissionRationale(Manifest.permission.READ_CONTACTS) == true) { 
       explain(); 
      } else { 
       //demander l'autorisation 
      } 
     } else { 
      View rootView = inflater.inflate(R.layout.fragment_gestion_contact, container, false); 

      final ListView list = (ListView) rootView.findViewById(android.R.id.list); 
      final List<String> contacts = retrieveContacts(getActivity().getContentResolver()); 

      if (contacts != null) { 
       list.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, contacts)); 
      } 

      return rootView; 
     } 
    } else { 
     View rootView = inflater.inflate(R.layout.fragment_gestion_contact, container, false); 

     final ListView list = (ListView) rootView.findViewById(android.R.id.list); 
     final List<String> contacts = retrieveContacts(getActivity().getContentResolver()); 

     if (contacts != null) 
     { 
      list.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, contacts)); 
     } 

     return rootView; 
    } 
    return null; 
} 

private List<String> retrieveContacts(ContentResolver contentResolver) 
{ 
    final Set<String> contacts = new HashSet<String>(); 
    final Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, new String[] { ContactsContract.Data.DISPLAY_NAME, ContactsContract.Data._ID, ContactsContract.Contacts.HAS_PHONE_NUMBER }, null, null, null); 

    if (cursor == null) 
    { 
     Log.e("retrieveContacts", "Cannot retrieve the contacts"); 
     return null; 
    } 

    if (cursor.moveToFirst() == true) 
    { 
     do 
     { 
      final long id = Long.parseLong(cursor.getString(cursor.getColumnIndex(ContactsContract.Data._ID))); 
      final String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)); 
      final int hasPhoneNumber = cursor.getInt(cursor.getColumnIndex(ContactsContract.Data.HAS_PHONE_NUMBER)); 

      if (hasPhoneNumber > 0) 
      { 
       contacts.add(name); 
      } 
     } 
     while (cursor.moveToNext() == true); 
    } 

    if (cursor.isClosed() == false) 
    { 
     cursor.close(); 
    } 

    final List<String> sortedContacts = new ArrayList<String>(contacts); 
    Collections.sort(sortedContacts); 

    return sortedContacts; 
} 
private void askForPermission() { 
    requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, 2); 
} 

private void explain() { 
    askForPermission(); 

} 

そして、私の活動:

public class GestionContact extends AppCompatActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.gestion_contact); 

    //Récupère le fragment permettant d'accèder à la liste des contacts 

    getSupportFragmentManager().beginTransaction().replace(R.id.fragmentLayout,new MonFragment()).commit(); 
} 

私は名前周辺ケースを作りたいです。

答えて

0

あなたはアンドロイドデベロッパーブロックを通過できます。あなたが使用できる参照のためにthis link

それはあなたにアンドロイドの連絡先について完全な詳細を提供します。

0

あなたは参照

ArrayAdapterアダプタ=新しいArrayAdapter(これ、android.R.layout.simple_list_item_multiple_choice、するlistContent)として、このコードに従うことができます。 myList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

myList.setAdapter(adapter); 
    getChoice.setOnClickListener(new Button.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      String selected = ""; 
      int cntChoice = myList.getCount(); 

      SparseBooleanArray sparseBooleanArray = myList.getCheckedItemPositions(); 
      for(int i = 0; i < cntChoice; i++){ 
       if(sparseBooleanArray.get(i)) { 
        selected += myList.getItemAtPosition(i).toString() + "\n"; 
       } 
      } 

      Toast.makeText(MainActivity.this, selected, Toast.LENGTH_LONG).show(); 
     }}); 
+0

ありがとうございます。私はそれを解決しました^^ –

0

私はgetChoice ボタンでクリックしたときにのみnumerotelをしたいしかし、今ではこのような名前とnumerotel

を取る:名前+番号の

RetrieveContact:

private List<String> retrieveContacts(ContentResolver contentResolver) 
{ 
    final Set<String> contacts = new HashSet<String>(); 
    final Cursor cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 

    if (cursor == null) 
    { 
     Log.e("retrieveContacts", "Cannot retrieve the contacts"); 
     return null; 
    } 

    if (cursor.moveToFirst() == true) 
    { 
     do 
     { 
      final long id = Long.parseLong(cursor.getString(cursor.getColumnIndex(ContactsContract.Data._ID))); 
      final String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
      final String numerotel = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      final int hasPhoneNumber = cursor.getInt(cursor.getColumnIndex(ContactsContract.Data.HAS_PHONE_NUMBER)); 

      if (hasPhoneNumber > 0) 
      { 
       contacts.add(name + " " + numerotel); 
      } 
     } 
     while (cursor.moveToNext() == true); 
    } 

    if (cursor.isClosed() == false) 
    { 
     cursor.close(); 
    } 

    final List<String> sortedContacts = new ArrayList<String>(contacts); 
    Collections.sort(sortedContacts); 

    return sortedContacts; 
} 

OnCreateView:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ View rootView = inflater.inflate(R.layout.fragment_gestion_contact, container, false); 

      final ListView list = (ListView) rootView.findViewById(android.R.id.list); 
      final List<String> contacts = retrieveContacts(getActivity().getContentResolver()); 


      if (contacts != null) { 
       list.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_multiple_choice, contacts)); 
       list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
       getChoice = (Button) rootView.findViewById(R.id.getchoice); 
       getChoice.setOnClickListener(new Button.OnClickListener(){ 



        @Override 

        public void onClick(View v) { 

         // TODO Auto-generated method stub 



         String selected = ""; 



         int cntChoice = list.getCount(); 

         SparseBooleanArray sparseBooleanArray = list.getCheckedItemPositions(); 

         for(int i = 0; i < cntChoice; i++){ 

          if(sparseBooleanArray.get(i)) { 

           selected += list.getItemAtPosition(i).toString() + "\n"; 



          } 

         } 



         Log.d("CONFIRMATION", selected); 

        }}); 
      } 
      return rootView; 
     } 

+ = list.getItemAtPosition(i).toString()+ "\ n";