Intereting Posts
Потоковая передача с камеры android на ионную OS X 10.6.6 и «устройства adb» не отображают устройства Android Портретная ориентация Android-модели Odroid-XU4 Программно получать цвета темы Как определить размер чертежей в файле стиля? Android eclipse DDMS – не удается получить доступ к данным / данным / на телефоне, чтобы вытащить файлы Проверьте, предоставил ли пользователь доступ NotificationListener к моему приложению Android: не удалось установитьLocale () при построении, закрытии базы данных Android java set image Ресурс RecyclerView – получить все существующие виды / зрители Использование общих настроек для сохранения высоких показателей Правильно запускать Activity from Notification независимо от состояния приложения Остановить фрагмент после воссоздания после возобновления? Не удалось выполнить синхронизацию проекта. Базовая функциональность (например, редактирование, отладка) не будет работать должным образом в android studio 1.0.1 Как установить таймер в android

Получение черного экрана при прокрутке в ListView на Android

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

1-й формат XML: –

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="7dp" > <TextView android:id="@+id/item_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="2dp" android:textColor="#000000" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="20dp" /> <TextView android:id="@+id/item_subtitle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#000000" android:padding="2dp" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="13dp" /> 

Второй макет ListView: -Он также имеет вид прокрутки.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFFFFF"> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:drawSelectorOnTop="false" /> <TextView android:id="@android:id/empty" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="No data" android:textColor="#000000" /> 

Код, где я использовал эти макеты: –

 ListAdapter adapter = new SimpleAdapter(this, HomeMenuActivity.mylist , R.layout.listdata, new String[] { "Name", "Vicinity" }, new int[] { R.id.item_title, R.id.item_subtitle }); setListAdapter(adapter); lv = getListView(); lv.setTextFilterEnabled(true); 

У меня есть статический arraylist «mylist», который имеет данные. Пожалуйста, если кто-нибудь знает, почему он показывает черный экран во время прокрутки, пожалуйста, направляйте меня.

Спасибо lv.setOnItemClickListener (это);

Я полностью согласен со всеми перечисленными выше ответами, но позвольте мне дать вам эту информацию:

В ListView есть прозрачный / полупрозрачный фон по умолчанию, и поэтому все виджеты по умолчанию в наборе инструментов Android UI. Это означает, что когда ListView перерисовывает своих детей, он должен смешивать детей с фоном окна. Еще раз, это требует дорогостоящих обращений к памяти из памяти, которые особенно болезненны во время прокрутки или броска, когда рисование происходит десятка раз в секунду.

Чтобы улучшить производительность чертежа во время операций прокрутки, платформа Android повторно использует подсказку в отношении цвета кеша. Когда этот намек установлен, среда копирует каждый дочерний элемент списка в битмап, заполненный значением подсказки (при условии, что другая оптимизация, называемая прокруткой кеша, не отключается). ListView затем сбрасывает эти растровые изображения непосредственно на экране, и поскольку эти растровые изображения, как известно, непрозрачны, смешение не требуется. Кроме того, поскольку указатель цвета кеша по умолчанию – # 191919, вы получаете темный фон позади каждого элемента во время прокрутки.

Чтобы исправить эту проблему, все, что вам нужно сделать, это либо отключить оптимизацию подсказок кеш-цвета, если вы используете не сплошной цвет фона, либо установите подсказку на соответствующее значение сплошного цвета. Вы можете сделать это из кода (см. setCacheColorHint(int) ) или предпочтительно из XML, используя атрибут android: cacheColorHint. Чтобы отключить оптимизацию, просто используйте прозрачный цвет # 00000000. На следующем скриншоте показан список с android:cacheColorHint="#00000000" установленный в файле макета XML

Для получения дополнительной информации: Android ListView Optimization

Решение:

Вы можете использовать android:cacheColorHint="@android:color/transparent" или android:cacheColorHint="#00000000"

Вы должны установить это в своем списке:

 android:cacheColorHint="#00000000" 

Цель состоит в том, чтобы отключить оптимизацию, которую делает фреймворк для улучшения производительности чертежа во время операций прокрутки.

Просто добавьте атрибут цветной подсказки в список.

  <ListView android:layout_height="wrap_content" android:layout_width="match_parent" android:cacheColorHint="@android:color/transparent" /> 

Добавьте одно свойство в тег listview в своем макете

 android:cacheColorHint="#00000000" 

После этого он должен работать.

Попробуйте этот код и установите цвет в соответствии с вашим требованием:

 String arr[]=new String[]{"a","bv"}; ListView lv; protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); lv=(ListView)findViewById(R.id.lv1); ArrayAdapterad=newArrayAdapter(getApplicationContext(),R.layout.check_it,R.id.txt_color,ar); lv.setAdapter(ad); } 
 <?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" > <ListView android:layout_width="match_parent" android:layout_height="250dp" android:id="@+id/lv1" android:background="#000" android:scrollingCache="false"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#fff" android:id="@+id/txt_color"/>