2012-02-07 2 views
1

Я создал файл в \ рес \ раскладка по имени contactlist.xmlПочему мой файл макета не распознается?

Но это не признается в своем коде:

SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, 
     //android.R.layout.simple_list_item_1, mContacts, //if cre8 own layout, replace "simple_[etc]" 
     //android.R.layout.simple_list_item_checked, mContacts, // or simple_list_item_multiple_choice 
     //android.R.layout.simple_list_item_multiple_choice, mContacts, 
     android.R.layout.contactlist, mContacts, // <- contact list ist xml-non-grata 
     new String[] { ContactsContract.Contacts.DISPLAY_NAME }, 
     new int[] { android.R.id.text1 }); 

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

Почему мой пользовательский макет не принят как действительный?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Обновлено 2/9/2012:

Наконец!

С помощью stackOverflowers и статье: http://www.vogella.de/articles/AndroidListView/article.html

я, наконец, получил это работает; как обычно, это не так сложно, как только вы выберете пару концепций. Она сводится к использованию такого рода код, который я просил/заимствованную/украл и адаптированные:

@Override общественного недействительный OnCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState);

// Return all contacts, ordered by name 
String[] projection = new String[] { ContactsContract.Contacts._ID, 
     ContactsContract.Contacts.DISPLAY_NAME }; 
mContacts = managedQuery(ContactsContract.Contacts.CONTENT_URI, 
     projection, null, null, ContactsContract.Contacts.DISPLAY_NAME); 

// Display all contacts in a ListView 
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, 
     R.layout.ondemandandautomatic_authorize, mContacts, 
     new String[] { ContactsContract.Contacts.DISPLAY_NAME }, 
     new int[] { R.id.contactLabel }); 

setListAdapter(mAdapter); 

}

... и убедившись, что "ondemandandautomatic_authorize" (или что вы называете ваш файл макета) что-то вроде этого (незавершенной, но вы получите идею):

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

    <CheckBox 
     android:id="@+id/checkBox1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="1" /> 

     <CheckBox 
     android:id="@+id/checkBox2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="2" /> 

     <CheckBox 
     android:id="@+id/checkBox3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="3" /> 

    <TextView 
     android:id="@+id/contactLabel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="(replace this)" 
     android:textSize="20px" > 
    </TextView> 

</LinearLayout> 

... и что "R.id.contactLabel" заменяется на "R.id."

Есть еще что делать, очевидно, но большое препятствие было прервано.

ответ

7

Это должно быть

R.layout.contactlist 

и не

android.R.layout.contactlist 

андроид используется при использовании системных ресурсов.

1

Если вы используете Eclipse, я думаю, вам стоит попробовать перезапустить Eclipse. Иногда, когда я добавляю новый xml или удаляю некоторые, мое затмение не достаточно умное, я не знаю, почему. Существуют и другие способы, такие как «Чистый проект» (но вы должны убедиться, что в вашем XML нет ошибки, иначе ваш R будет навсегда).

Не совсем уверен, надеюсь, что это поможет

1

Я думаю, у пропустил setContentView (R.Layout.contactlist); ... также и необходимо указать это в манифесте.

+0

Укажите, что в манифесте? –

2

используйте R-файл (R.layout.contactlist), созданный приложением, вместо использования файла R, созданного андроидом (android.R.layout.contactlist).

1

Иногда, даже если вы заменили файл android.R.layout.zzz на R.layout.zzz, Eclipse все равно покажет вам сообщение об ошибке вашего макета клиента.

Я только сейчас столкнулся с этой проблемой.

Решение для меня было удалить этот текст и записать его снова. Вы также можете написать его постепенно, написав «R.». затем нажмите Alt + Space, Eclipse предоставит вам 2 варианта (android.R и R.), просто выберите R., а затем продолжите остаток.

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