私は連絡先のマルチチェックリストビューを作成する必要があります。確認ボタンをクリックすると、データベースにモバイル番号を挿入する必要があります。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();
}
私は名前周辺ケースを作りたいです。
ありがとうございます。私はそれを解決しました^^ –