Какой вид XML ожидает SimpleCursorAdapter? - PullRequest
0 голосов
/ 08 января 2012

У меня были проблемы с отображением контактов в AlertDialog, и я думаю, что нашел проблема, но я все еще в замешательстве. Соответствующая подозрительная часть моего кода:

SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this,
        android.R.layout.simple_list_item_1, mContacts,
        new String[] { ContactsContract.Contacts.DISPLAY_NAME },
        new int[] { android.R.id.text1 });

... Теперь компилятор принимает "simple_list_item_1" (приложение запускается в эмуляторе), однако, когда Я пытаюсь запустить этот ListActivity, он бомбит.

Так что после прочтения в другом месте о том, как выполнить эту задачу, мои глаза уставились на вышеупомянутых "simple_list_item_1" - где это? Я не создал ни одного файла simple_list_item_1.xml, и он не существует в моей папке \ res \ layout. Поэтому я (в Eclipse) щелкнул правой кнопкой мыши «simple_list_item_1» и выбрал «Открыть декларацию», и он вызвал сообщение об ошибке, очень похожее на то, что я вижу в перспективе отладки для «Редактор файлов классов | Обнаружен исходный файл | Файл JAR». ... \ android.jar не имеет вложения источника. "

Итак ... если предположить, что это проблема (в моей папке \ res \ layout нет "simple_list_item_1.xml"), что именно ожидается в этом файле (я предполагаю, что это просто XML-определение того, что я хочу) каждый контакт для отображения)?

==============

Вот некоторые данные LogCat:

Вот последние строки в LogCat (кажется, он умирает / зависает, когда попадает в ListActivity (ContactsActivity):

com.aXX3AndSpace.KeepInTouch/.KeepInTouchActivity: +5s368ms
01-08 21:54:34.020: I/ActivityManager(61): Starting: Intent { cmp=com.aXX3AndSpace.KeepInTouch/.ContactsActivity } from pid 385

... и вот все сообщения об ошибках за одну попытку (откройте приложение, попробуйте вызвать ListActivity). Обратите внимание на сообщение «ЭТО НЕ ДОЛЖНО БЫТЬ» в конце:

01-08 21:53:36.592: E/Zygote(33): setreuid() failed. errno: 2
01-08 21:53:46.423: E/Zygote(33): setreuid() failed. errno: 17
01-08 21:53:47.842: E/BatteryService(61): usbOnlinePath not found
01-08 21:53:47.842: E/BatteryService(61): batteryVoltagePath not found
01-08 21:53:47.842: E/BatteryService(61): batteryTemperaturePath not found
01-08 21:53:47.862: E/SurfaceFlinger(61): Couldn't open /sys/power/wait_for_fb_sleep or /sys/power/wait_for_fb_wake
01-08 21:53:48.082: E/SensorService(61): couldn't open device for module sensors (Invalid argument)
01-08 21:53:53.722: E/System(61): Failure starting core service
01-08 21:53:53.722: E/System(61): java.lang.SecurityException
01-08 21:53:53.722: E/System(61):   at android.os.BinderProxy.transact(Native Method)
01-08 21:53:53.722: E/System(61):   at android.os.ServiceManagerProxy.addService(ServiceManagerNative.java:146)
01-08 21:53:53.722: E/System(61):   at android.os.ServiceManager.addService(ServiceManager.java:72)
01-08 21:53:53.722: E/System(61):   at com.android.server.ServerThread.run(SystemServer.java:207)
01-08 21:53:53.742: E/EventHub(61): could not get driver version for /dev/input/mouse0, Not a typewriter
01-08 21:53:53.742: E/EventHub(61): could not get driver version for /dev/input/mice, Not a typewriter
01-08 21:53:54.032: E/SoundPool(61): error loading /system/media/audio/ui/Effect_Tick.ogg
01-08 21:53:54.032: E/SoundPool(61): error loading /system/media/audio/ui/KeypressStandard.ogg
01-08 21:53:54.032: E/SoundPool(61): error loading /system/media/audio/ui/KeypressSpacebar.ogg
01-08 21:53:54.042: E/SoundPool(61): error loading /system/media/audio/ui/KeypressDelete.ogg
01-08 21:53:54.042: E/SoundPool(61): error loading /system/media/audio/ui/KeypressReturn.ogg
01-08 21:53:54.703: E/ThrottleService(61): Could not open GPS configuration file /etc/gps.conf
01-08 21:53:57.172: E/logwrapper(158): executing /system/bin/tc failed: No such file or directory
01-08 21:53:57.242: E/logwrapper(159): executing /system/bin/tc failed: No such file or directory
01-08 21:53:57.282: E/logwrapper(160): executing /system/bin/tc failed: No such file or directory
01-08 21:54:00.074: E/jdwp(174): Failed sending reply to debugger: Broken pipe
01-08 21:54:00.712: E/Database(116): sqlite_config failed error_code = 21. THIS SHOULD NEVER occur.

Ответы [ 2 ]

2 голосов
/ 08 января 2012

simple_list_item_1 - это стандартный макет, определенный в SDK, в основном это просто TextView с идентификатором "android: id / text1", который вы указываете в идентификаторах своего представления.

Есть ли у вас трассировка стека аварии? Потому что это, скорее всего, не из-за отсутствия макета simple_list_item_1.

1 голос
/ 08 января 2012

Создайте новый файл макета XML с помощью мастера Eclipse. Имя этого файла заменит simple_list_item_1 в вашем коде:

В этом макете создайте элемент TextView (или любой другой контейнер) и назовите его text1:

Тогда SimpleCursorAdaptor будет соответствовать вашей контактной информации и полю text1 в вашем макете

<?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:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />

...