Извлечение и отображение имени контакта из идентификатора контакта при использовании SimpleCursorAdapter - PullRequest
0 голосов
/ 11 ноября 2011

Я храню информацию о контактах телефона, используя базу данных sqlite. Я храню следующие поля: _id, contact_id, body, где _id - это идентификатор строки, contact_id - это идентификатор телефонного контакта, а body - это простой текст, который представляет собой фактическую информацию, которую я храню.

Я использую SimpleCursorAdapter для сопоставления данных с представлением, например так:

Cursor cursor = database.fetchInformation(); // fetch info from DB
    String[] from = new String[] { CONTACT_ID, BODY };
    int[] to = new int[] { R.id.contact, R.id.body };

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.row, cursor, from, to);
    getListView().setAdapter(adapter);

На самом деле я хотел бы получить имя контакта, связанное с этим CONTACT_ID, и иметь , чтобы отображалось в представлении.

Кажется, я не могу найти простое решение. Я попытался реализовать свой собственный SimpleCursorAdapter и переписать setViewText (TextView, String), но это не сработало. Кроме того, это кажется слишком сложным для такой простой задачи.

Любая помощь? Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2011

попробуйте

String where=PEOPLE.CONTACT_ID+"="+requiredId;
String[] projection={People.Name};//u only need name right?
int[] to = new int[] {R.id.body };//if body is ur text view

Cursor cursor = getContentResolver().query(People.CONTENT_URI,projection,where,null, null);

ListAdapter adapter=new SimpleCursorAdapter(this,R.layout.row,result,projection,to);

setListAdapter(adapter);
0 голосов
/ 11 ноября 2011

У вас действительно есть два варианта:

1) Вы можете создать MatrixCursor, который содержит всю информацию, которую вы хотите привязать к своему ListView.Хотя это не очень сложно сделать, это, вероятно, не самое эффективное использование памяти, потому что вам нужно будет получить имя каждого контакта в вашем курсоре.

2) Вы можете создать подкласс из CursorAdapter.Довольно просто реализовать соответствующие методы newView и bindView.Внутри bindView вы просто запросите контактную информацию, предоставленную контактному лицу телефона, чтобы узнать имя связываемого в данный момент контакта.

...