2010-04-09 6 views
3

Я пишу свое первое приложение для Android (я ноб у android, но порядочный в java). Первый экран приложения состоит из огромного списка (около 1.5K элементов) объектов Manga. Код, который я использую следующие:Контакт-приложение, как прокручиваемый список на android

main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:id="@+id/LinearLayout01" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     xmlns:android="http://schemas.android.com/apk/res/android"> 
     <ListView android:layout_height="fill_parent" 
      android:layout_width="fill_parent" 
      android:id="@+id/android:list"></ListView> 
     <TextView android:layout_height="fill_parent" 
      android:layout_width="fill_parent" 
      android:text="@string/list_no_items" 
      android:id="@+id/android:empty"></TextView> 
</LinearLayout> 

row.xml:

<LinearLayout android:id="@+id/LinearLayout01" 
       android:layout_width="fill_parent" 
       android:layout_height="?android:attr/listPreferredItemHeight" 
       android:padding="6dip" 
       xmlns:android="http://schemas.android.com/apk/res/android"> 
    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_marginRight="6dip" 
     android:src="@drawable/icon" /> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:layout_height="fill_parent"> 
     <TextView 
      android:id="@+id/toptext" 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
     /> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:id="@+id/bottomtext" 
      android:singleLine="true" 
      android:ellipsize="marquee" 
     /> 
    </LinearLayout> 
</LinearLayout> 

Тогда у меня есть адаптер, который в основном принимает Manga-объект и помещает его имя в строки toptext, и это последняя обновленная дата в нижнем тексте. Однако (это может быть вызвано виртуализацией устройства, хотя), результат очень медленный. Прокрутка списка выполняется навсегда, и вы можете прокручивать только маленькие точки времени. Как заставить список работать так же, как в приложении-контактах? Таким образом, когда вы начинаете прокручивать дескриптор, выпадаете в правой части экрана, и когда вы перетаскиваете его, появляется сообщение о том, как далеко вы прокручиваете (список сортируется в алфавитном порядке), а также есть способ, которым я может улучшить производительность списка?

ответ

7

Чтобы добавить палец скроллер, настроить ListView в вашем main.xml так:

<ListView android:layout_height="fill_parent" 
     android:layout_width="fill_parent" 
     android:id="@+id/android:list" 
     android:fastScrollEnabled="true"></ListView> 

Добавление атрибута android:fastScrollEnabled="true".

https://developer.android.com/reference/android/widget/AbsListView.html#attr_android:fastScrollEnabled

Вы также можете посмотреть с помощью SectionIndexer.

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