#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();
)