Android contatti in una ListView

gerasia

Utente Electrum
30 Gennaio 2018
288
72
52
176
salve a tutti, ho estrapolato i contatti del mio telefono e li ho inseriti in una ListView, l'utente dovrebbe poter selezionare tutti i contatti che vuole e questi poi dovrebbero essere mostrati. So selezionarli, ma non so mostrali, qualcuno potrebbe darmi una mano? mi basta anche soltanto riuscire a reperire gli attributi del contatto telefonico (nome e numero)
Java:
private void _addContact() {

        AlertDialog.Builder Builder = new AlertDialog.Builder(NewGame.this);
        Builder.setTitle("Select a friend");
        final View v = LayoutInflater.from(NewGame.this).inflate(R.layout.item_dialog,null, false);
        Builder.setView(v);

        Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null,null);
        startManagingCursor(cursor);
        final String[] from = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Photo.PHOTO};
        int[] to = {android.R.id.text1, android.R.id.text2};
        final SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor, from, to);
        final ListView l1 = v.findViewById(R.id.ContactsList);
        final ArrayList<String> selectedList = new ArrayList<>();
        l1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                view.setSelected(true);
                if (selectedList.contains(simpleCursorAdapter.getItem(i).toString()))
                    selectedList.remove(simpleCursorAdapter.getItem(i).toString());
                else
                    selectedList.add(simpleCursorAdapter.getItem(i).toString());
            }
        });

        l1.setAdapter(simpleCursorAdapter);
        l1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        final EditText etItem = v.findViewById(R.id.etItem);
        Builder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                for(String x : selectedList)
                    list.add(x);
                arrayAdapter.notifyDataSetChanged();
            }
        });

        Builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });

        Builder.show();

    }
 
Consiglio di cambiare approccio passando ad una RecyclerView e creando il suo apposito adapter nel quale usi gli observer per reagire al click su un elemento.

Per mostrarli cosa intendi?