проблема в Android listview

#android #listview #adapter

#Android #listview #адаптер

Вопрос:

я пытаюсь вставить код в Android

 tv=(TextView) findViewById(R.id.ringtone);
    if (!hasErrors) {

        setListAdapter(new ArrayAdapter<String>(FindFilesByType.this, R.layout.main,
                Ringtones));

        lv.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> aView, View v,
                    int position, long id) {
                currentPosition = position;
                playRingtone(DIRECTORY Ringtones.get(position));
            }
        });
  

но я получаю следующий Logcat, и мое приложение принудительно закрывается

04-27 11:05:08.212: INFO /ActivityManager(52): Запуск действия: Намерение { cmp=android.com.testHTML/.FindFilesByType }
04-27 11:05:08.353: INFO / NotificationService(52): обратный вызов в очереди pkg= android.com.testHTML=android.app.ITransientNotification $ Заглушка $ Прокси @4394f760 длительность = 0
04-27 11:05:08.454: ОШИБКА / ArrayAdapter(715): необходимо указать идентификатор ресурса для TextView 
04-27 11:05:08.454: ПРЕДУПРЕЖДЕНИЕ / dalvikvm(715): threadid = 3: поток завершается с неперехваченным исключением (group= 0x4001aa28)
04-27 11:05: 08.454: ОШИБКА / AndroidRuntime (715): обработчик неполадок: основной поток завершается из-за неполученного исключения
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): java.lang.Исключение IllegalStateException: ArrayAdapter требует, чтобы идентификатор ресурса был TextView 
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:347)
04-27 11:05: 08.473: ОШИБКА / AndroidRuntime (715): в android.widget.ArrayAdapter.getView(ArrayAdapter.java: 323)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.widget.AbsListView.obtainView(AbsListView.java: 1273)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.widget.ListView.makeAndAddView(ListView.java: 1658)
04-27 11:05: 08.473: ОШИБКА / AndroidRuntime (715): в android.widget.ListView.fillDown(ListView.java: 637)
04-27 11:05: 08.473: ОШИБКА / AndroidRuntime (715): в android.widget.ListView.fillFromTop(ListView.java: 694)
04-27 11:05: 08.473: ОШИБКА / AndroidRuntime (715): в android.widget.ListView.layoutChildren (ListView.java: 1516)
04-27 11:05: 08.473: ОШИБКА / AndroidRuntime (715): в android.widget.AbsListView.onLayout (AbsListView.java: 1112)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.view.View.layout (View.java:6569)
04-27 11:05: 08.473: ОШИБКА / AndroidRuntime (715): в android.widget.LinearLayout.setChildFrame (LinearLayout.java: 1119)
04-27 11:05: 08.473: ОШИБКА / AndroidRuntime (715): в android.widget.LinearLayout.Горизонтальная компоновка (LinearLayout.java: 1108)
04-27 11:05: 08.473: ОШИБКА / AndroidRuntime (715): в android.widget.LinearLayout.Исходное описание (LinearLayout.java: 920)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.view.View.layout (View.java:6569)
04-27 11:05: 08.473: ОШИБКА / AndroidRuntime (715): в android.widget.FrameLayout.Исходное описание (FrameLayout.java:333)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.view.View.layout (View.java:6569)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.widget.LinearLayout.setChildFrame (LinearLayout.java: 1119)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.widget.LinearLayout.Макет вертикальный (LinearLayout.java: 998)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.widget.LinearLayout.Исходное описание (LinearLayout.java: 918)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.view.View.layout (View.java:6569)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.widget.FrameLayout.Исходное описание (FrameLayout.java:333)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.view.View.layout (View.java:6569)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.view.ViewRoot.performTraversals (ViewRoot.java: 979)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.view.ViewRoot.handleMessage (ViewRoot.java: 1613)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.os.Handler.DispatchMessage (Handler.java:99)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.os.Looper.loop (Looper.java: 123)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.app.ActivityThread.main (ActivityThread.java:4203)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в java.lang.reflect.Метод.invokeNative (собственный метод)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в java.lang.reflect.Метод.invoke(Method.java:521)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 549)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в dalvik.system.NativeStart.main (собственный метод)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): Вызвано: java.lang.ClassCastException: android.widget.LinearLayout 
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): в android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java: 340)
04-27 11:05:08.473: ОШИБКА / AndroidRuntime (715): ... еще 30
04-27 11:05:08.493: ИНФОРМАЦИЯ / процесс (52): Отправка сигнала. PID: 715 Сигнал: 3 
04-27 11:05:08.493: INFO / dalvikvm(715): threadid = 7: реагирование на сигнал 3 
04-27 11:05:08.503: ОШИБКА / dalvikvm (715): не удается открыть файл трассировки стека '/data/anr/traces.txt ': В разрешении отказано
04-27 11:05:13.472: ИНФОРМАЦИЯ / процесс (715): Отправка сигнала. PID: 715 Сигнал: 9
04-27 11:05:13.503: INFO / ActivityManager(52): Процесс android.com.testHTML (pid 715) прекратил работу.
04-27 11:05:13.512: INFO / WindowManager(52): СМЕРТЬ ОТ ПОБЕДЫ: Window{43885018 android.com.testHTML/android.com.testHTML.testhtmlактивность приостановлена = false}
04-27 11:05:13.512: INFO / WindowManager(52): СМЕРТЬ от ПОБЕДЫ: окно {43933640 приостановлено = false}
04-27 11:05:13.512: INFO / WindowManager(52): СМЕРТЬ ОТ ПОБЕДЫ: окно{439071b0 android.com.testHTML/android.com.testHTML.FindFilesByType приостановлено = false}
04-27 11:05:13.592: INFO / ActivityManager(52): Запустить процесс android.com.testHTML для активности android.com.testHTML/.testHTMLActivity: pid= 750 uid = 10024 gids ={3003, 1015}
04-27 11:05:13.784: INFO / jdwp(750): получен файловый дескриптор 20 из ADB
04-27 11:05: 13.913: WARN / UsageStats(52): что-то здесь не так, не ожидал, что android.com.testHTML будет возобновлен
04-27 11:05:14.503: ПРЕДУПРЕЖДЕНИЕ / InputManagerService (52): получено исключение RemoteException, отправляющее уведомление SetActive (false) на pid 715 uid 10024
04-27 11:05:14.643: INFO / ActivityManager(52): Отображаемая активность android.com.testHTML/.testhtmlактивность: 1139 мс (всего 6398 мс)

что я делаю не так?

Заранее спасибо

Комментарии:

1. Можете ли вы опубликовать свой XML-макет? Вы уверены, что это R.id.ringtone относится к TextView?

Ответ №1:

ну, друг, твоя проблема в том, что ты используешь r.layout.основная для строки списка.

вы должны создать отдельный макет listrow, где вы упоминаете только textview, и передать его как макет, ваша ошибка в этой строке

 setListAdapter(new ArrayAdapter<String>(FindFilesByType.this, R.layout.main,
                Ringtones));
  

создайте макет, скажем listrow.xml

 <?xml version="1.0" encoding="utf-8"?>
<TexView
.....
/>
  

и измените свою строку

 setListAdapter(new ArrayAdapter<String>(FindFilesByType.this, R.layout.listrow,
                    Ringtones));
  

Комментарии:

1. хорошо, я нашел решение:- this.lv1.setAdapter(новый ArrayAdapter<Строка>(FindFilesByType.this, android.R.layout.test_list_item, рингтоны));

Ответ №2:

В logcat четко указано, что вам необходимо предоставить идентификатор ресурса для textview, где в качестве того, что вы предоставляете, является linearlayout (я предполагаю, поскольку это вызывает ClassCastException) Я верю тебе main.xml это linearlayout, а не textview. Вместо этого попробуйте R.id.ringtone

Ответ №3:

Ваша проблема описана в этих строках:

 11:05:08.473: ERROR/AndroidRuntime(715): Caused by: java.lang.ClassCastException: android.widget.LinearLayout
04-27 11:05:08.473: ERROR/AndroidRuntime(715):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:340)
  

Вероятно, это означает, что вы используете что-то как LinearLayout , хотя это не так.
(большую часть времени вы получаете ClassCastException, вы делаете что-то вроде
foobar = (LinearLayout) someCode(); )