Как добавить пользовательский интерфейс в большой список просмотра Android? - PullRequest
0 голосов
/ 26 января 2011

У меня есть приложение для Android, которое отображает пользовательский список контактов около 500 человек, и он работает нормально; однако если я ищу имя, начинающееся с буквы «s», то прокрутка вниз занимает целую вечность.

Как я могу запрограммировать его для перехода к S без прокрутки всего списка?

Вот код XML-макета:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_height="fill_parent" 
  android:layout_width="fill_parent"
  android:background="@color/background"
  android:orientation="vertical">
  <ListView android="@+id/android:thelist" android:layout_height="0dip" 
  android:layout_width="wrap_content" 
  android:scrollbars="vertical"
  android:fadingEdge="vertical"
  android:padding="2dp" 
  android:fastScrollEnabled="true">
  </ListView>

<TextView android:text="@+id/TextView01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/label" 
android:textSize="14dip" 
android:textStyle="bold" android:paddingLeft="10dip" android:paddingTop="3dip"></TextView>
</LinearLayout>

Ответы [ 2 ]

0 голосов
/ 22 марта 2011

Используйте следующее:

  1. Включите быструю прокрутку с помощью android:fastScrollEnabled="true"

  2. Убедитесь, что ваш ListAdapter реализует интерфейс android.widget.SectionIndexer

Обычно это просто реализовать SectionIndexer.Схема кода может быть следующей:

class SI extends ... implements SectionIndexer
{
   getSection() {
      return new String[] { "A", "B", ... };
   }

   getSectionForPosition(position) {
      //Just an example
      Object obj = getItem(position);
      char c = obj.toString().charAt(0);
      return (c - 'A');
   }

   getPositionForSection(section) {
      List<?> items = getAllItems();
      char c = (char) ('A' + section);
      int position = getFirstItemStartingWith(items, c);
      return position;
   }
}

Дайте мне знать, если это сработало.

-Gaurav www.incoleg.com

0 голосов
/ 26 января 2011

Рассматривали ли вы возможность использования опции fastScroll?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...