Afficher le Numéro de Contact et le Nom du Contact dans une liste personnalisée de vue
Quelqu'un peut me dire comment dois-je afficher le numéro de téléphone et le nom du contact dans une liste personnalisée de vue?
Le code est copié ci-dessous
import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class AddContacts extends Activity implements OnClickListener {
ListView list;
Cursor cursor;
SimpleCursorAdapter adapter;
String phoneNumber;
Button AddNumber;
EditText number1;
EditText number2;
EditText number3;
String contact1;
String contact2;
CheckBox checkBox;
String contact_name;
static final String TAG = "In AddContacts";
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
AddNumber = (Button) findViewById(R.id.AddNumbers);
number1 = (EditText) findViewById(R.id.NumberField1);
number2 = (EditText) findViewById(R.id.NumberField2);
number3 = (EditText) findViewById(R.id.NumberField3);
AddNumber.setOnClickListener(this);
list = (ListView) findViewById(R.id.lists);
Log.d(TAG, "onCreate");
Cursor cursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
null, null);
String[] nameNumberArray = new String[cursor.getCount()];
Log.d("rows", Integer.toString(cursor.getCount()));
Log.d("phone", "here");
while (cursor.moveToNext()) {
String phoneNumber =
cursor.getString(cursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String name = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
Log.i("Number + Name", phoneNumber + name);
}
if (cursor.getCount() > 0) {
int i = 0;
if (cursor.moveToFirst()) {
do {
phoneNumber = cursor
.getString(cursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contact_name = cursor
.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
nameNumberArray[i] = contact_name + " , " + phoneNumber;
i++;
} while (cursor.moveToNext());
}
}
final String[] FROM = { nameNumberArray[0], nameNumberArray[1] };
final int[] TO = { R.id.contact_name, R.id.phone_number, };
adapter = new SimpleCursorAdapter(this, R.layout.row, cursor, FROM, TO);
list.setAdapter(adapter);
cursor.close();
}
@Override
public void onClick(View v) {
Log.d(TAG, "onClicked method");
}
}
L'ROW.xml le fichier est une coutume listView avec une case à cocher et deux textView pour elle.
Le code extrait les données sur les contacts et l'affiche dans le LogCat. Je ne peux pas comprendre comment afficher le nom et le numéro dans mon affichage personnalisé à l'aide de simpleCursorAdapter.
L'row.xml fichier
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/contact_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="John Doe"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/phone_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/contact_name"
android:text="(999)999-9999"
android:textAppearance="?android:attr/textAppearanceMedium" />
<CheckBox
android:id="@+id/checkBox_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" />
</RelativeLayout>
Quelqu'un peut-il me guider?
Merci.
- voulez-vous utiliser un adaptateur personnalisé? j'ai une solution qui affiche le nom et le numéro de téléphone à l'aide de la coutume adaptateur
- Je peux donner que d'essayer. Ai-je besoin pour se débarrasser de simpleCursorAdapter pour qui?
- wll si vous voulez, je peux fournir une solution alternative
- Avez-vous quelque chose qui pourrait m'aider avec SimpleCursor? Si non je peux donner la coutume adaptateur d'essayer.
- non, je ne pas utiliser un simplecursor adaptateur. mais j'utilise un adaptateur personnalisé.
- c'est bien..pouvez-vous s'il vous plaît poster la coutume adaptateur code de référence?
- assurez-vous de me donner un moment
InformationsquelleAutor user2511882 | 2013-06-23
Vous devez vous connecter pour publier un commentaire.
Depuis l'op demandé pour la solution à l'aide de la coutume adaptateur que j'ai posté ci-dessous.(d'après les commentaires)
Display.java
display.xml
Explication:
Ci-dessus utilise un Adaptateur Personnalisé. Une mise en page personnalisée
row.xml
avec 2 textviews et une case à cocher est gonflé pour chaque ligne.getAllContacts()
obtiendrez tous les contacts de la liste de contacts et de les stocker dans une liste.Coutume Adaptateur affiche les articles dans une mise en page personnalisée gonflé pour chaque ligne.
Lorsque vous cochez la case et cliquez sur affichage affiche un toast avec des contacts sélectionnés nom.
Snap shot
Display.this
. un copier coller de l'erreur. c'estActivity context
. VotreActivityName.this
est le Acctivity contexte.Je pense que vous devriez appeler
cursor.moveToFirst()
de nouveau avant de passer à l'SimpleCursorAdapter
, en tant que droit maintenant, vous êtes à l'envoi d'un "fini" curseur.En plus de cela, votre code est bien. Vous pouvez le comparer au code ici, qui fait quelque chose de similaire (Mais avec un définis par l'utilisateur de la base de données).