2014-10-21 2 views
0

Я пытаюсь прочитать имя контактов на моем телефоне, но когда дело доходит до setListAdapter(), я продолжаю получать упомянутую выше ошибку.setListAdapter не определен для типа create

Когда я extends ListActivity вместо Activity ошибок нет, но сила приложения закрывается.

Также я попытался расширить Activity и ListActivity, создав еще один класс внутри Create, который расширился listActivity, но ничего не отображалось. Im, отображающийся на дисплее create.xml. Это create.java происходит, когда пользователь нажимает на кнопку создать, что было сделано в моей main.xml файле

Create.java

import android.app.Activity; 
import android.app.ListActivity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.widget.ArrayAdapter; 


public class Create extends Activity { 

@Override 
protected void onCreate(Bundle savedInstancesState) 
{ 
    super.onCreate(savedInstancesState); 
    setContentView(R.layout.create); 

Cursor cursor = getContentResolver().query(
      ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 

    ArrayAdapter<String> list = new ArrayAdapter<String>(this, R.layout.create); 


    while(cursor.moveToNext()) { 

     String name = cursor.getString(cursor 
       .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     list.add(name); 
    } 

    setListAdapter(list); 
    } 
} 

Это create.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TextView 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/create_button_title" 
    android:textSize="24.5sp" 
    android:layout_marginTop="24dip"/> 

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_marginTop="22dip"> 

    <EditText 
     android:id="@+id/contacts_label" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_toLeftOf="@+id/choose_contacts" 
     android:hint="@string/choose_contacts" /> 

    <Button 
     android:id="@+id/choose_contacts" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:text="@string/contacts_button" 
     /> 

    <ListView 
     android:id="@+id/contacts_list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="44dip" 
     ></ListView> 

    </RelativeLayout> 

+0

, если вы используете 'setListAdapter()' ваша деятельность должна 'extends ListActivity' – Rustam

+0

@Rustam, как в мире ваше редактирование сделало это сообщение лучше? – codeMagic

+0

@codeMagic last '}' не был в вашем разделе кода. – Rustam

ответ

0

Для этого, когда extends Activity вам нужно чтобы получить ссылку на ваш ListView в onCreate()

ListView lv = (ListView) findViewById(R.id.contacts_list);` 

затем использовать метод setAdapter() на нем

lv.setAdapter(list); 

setListAdapter() и getListView() методы удобства при расширении ListActivity и не будет работать при расширении любого другого класса.

Насколько он не работал, когда у вас было extends ListActivity, это трудно сказать, не видя стоп-трасс от аварии.

If you look at the docs `макет должен быть

ресурс Ресурс ID для файла макета, содержащего TextView использовать при инстанцировании взглядов.

он должен содержать только TextView. Если вы хотите другой View s, тогда вы должны создать пользовательский Adapter и переопределить getView(). Все это объясняется в документах на самом верху.

Вы можете найти множество учебников/примеров о том, как это сделать, выполнив поиск в Google для чего-то вроде «Custom adapter ListView Android».

+0

Теперь ошибок нет, но я все еще испытываю такую ​​же проблему, когда я нажимаю кнопку create, приложение закрывается, и я получаю процесс сообщения ... сбой com.contacts, я добавил listview lv = (ListView) findViewById (R. контакты) и lv.setAdapter (list) и достал setListAdapter (список) – user3754017

+0

Если он сбой, есть журнал сбоев – codeMagic

+0

, который он говорит для ArrayAdapter, вы должны указать идентификатор ресурса для текстового поля – user3754017

Смежные вопросы