Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
#1

Интересный ЛистВью - Android

19.07.2012, 02:43. Просмотров 1239. Ответов 14
Метки нет (Все метки)

Есть такая задачка. Где-то в интерфейсе расположен ListView из 100 элементов, нужно, чтобы он одновременно отображал не более 10 элементов, причем при слайде по нему, показывал следующие/предыдущие 10.
Вопрос-как это сделать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
19.07.2012, 11:40     Интересный ЛистВью #2
Если правильно написан адаптер то LISTVIEW использует ограниченое количество ячеек. Их количество - это количество видимых ячеек + 2-3 с верху и снизу. В чем заключаеться ваш я вопрос я не понял.
kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
19.07.2012, 12:43  [ТС]     Интересный ЛистВью #3
Нет, адаптер содержит полный список элементов, т. е. 100. Высота одной ячейки должна занимать 10-ю часть выделенного для ListView пространства. прокручивание элементов по одному надо запретить, вместо этого при слайде вверх/вниз по списку нужно чтобы он прокручивался на 10 позиций вверх/вниз.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
19.07.2012, 12:46     Интересный ЛистВью #4
и в чем конкретно сложность? давай по порядку.
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
19.07.2012, 12:49     Интересный ЛистВью #5
Цитата Сообщение от kvaka Посмотреть сообщение
Нет, адаптер содержит полный список элементов, т. е. 100

аргументы в студиу или у вас не правильно написанный адаптер

EDIT
может вы путаете количество ячеек в LISTVIEW
и количество элементов в вашем массиве
kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
19.07.2012, 14:31  [ТС]     Интересный ЛистВью #6
Ок, по порядку.
-Как сделать, чтобы только 10 из 100, да или из произвольного количества элементов списка отображались на выделенной области полностью ее заполняя и равномерно распределяя между собой пространство?

Количество элементов массива с количеством элементов списка не путаю, но сейчас оно совпадает.
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
19.07.2012, 16:11     Интересный ЛистВью #7
Цитата Сообщение от kvaka Посмотреть сообщение
Как сделать, чтобы только 10 из 100
задача в принципе не тривиальная
вот впринципе решение http://stackoverflow.com/questions/4...-swipe-on-list
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
19.07.2012, 16:31     Интересный ЛистВью #8
что-то не вижу там решений...

можно в адаптере задать высоту ячейки поделив высоту листа на 10. Высота листа вытягивается с parent в методе getView.
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
19.07.2012, 16:34     Интересный ЛистВью #9
эм я имел ввиду свайп в 10 ячеек за один раз
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
19.07.2012, 16:40     Интересный ЛистВью #10
так он не про свайп в последнем посте спросил)
kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
20.07.2012, 00:19  [ТС]     Интересный ЛистВью #11
Свайп - это прокрутка на 10 позиций по соответствующему жесту?
Если да, то это может и то что надо, но вопрос с делением пространства все равно актуален.

Что значит:
задать высоту ячейки поделив высоту листа на 10.

Мы ведь когда размещаем список интерфейс еще не отрисован и размерами пространства мы оперировать не можем.

А может элементом списка сделать, например, массив из 10 элементов, и в адаптере эти 10 элементов отображать?...
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.07.2012, 01:27     Интересный ЛистВью #12
Цитата Сообщение от kvaka Посмотреть сообщение
Что значит:
задать высоту ячейки поделив высоту листа на 10.
Мы ведь когда размещаем список интерфейс еще не отрисован и размерами пространства мы оперировать не можем.
А может элементом списка сделать, например, массив из 10 элементов, и в адаптере эти 10 элементов отображать?...
Прочитай мой пост полностью.
kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
25.07.2012, 15:10  [ТС]     Интересный ЛистВью #13
Как из parent взять высоту листа? Это же в onCreate все задается. Список еще не на экране, размеры непонятны...
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.07.2012, 18:54     Интересный ЛистВью #14
Цитата Сообщение от V0v1k Посмотреть сообщение
в адаптере в методе getView
.....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2012, 12:21     Интересный ЛистВью
Еще ссылки по теме:

При скролинге листвью, картинки пропадают Android
C++ WinAPI Шрифты, табконтролы, листвью и вывод текста
Android Android MySQL в листвью
Delphi Сортировка листвью

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
26.07.2012, 12:21  [ТС]     Интересный ЛистВью #15
Вообще я фигню написал в последний раз. ))
Значит, в методе getView вызываю parent.getHeight(). Далее могу получить 10-ю часть этой высоты.
Это все без проблем.

При попытке установить для convertView высоту через setLayoutParams выдает ошибку.
Собственно вызов
Java
1
convertView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
Тоже выдает ошибку.

Далее, адаптер для отображения элементов использует разметку:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" 
    android:background="@android:color/transparent">
  
        <TextView 
            android:id="@+id/item_name"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
 
            android:layout_alignParentLeft="true"
            android:background="@android:color/transparent"
        />
        
        <CheckBox 
            android:id="@+id/checkbox"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
 
            android:layout_alignParentRight="true"
        />
        
</RelativeLayout>
Исходя из того что корневой элемент в разметке для параметра высоты имеет wrap_content решил установить высоту для вложенных элементов - текстового поля и чекбокса. В итоге TextView принимает нужную высоту - это видно по обрезанным буквам. Чекбокс остается как был. Кстати, было замечено, что если чекбоксу задать большой размер, то отображаться он будет так-же, но выделенное под него место раздуется.
В итоге непонятно как вычесленную нужную высоту назначить отображаемым элементам.((
Yandex
Объявления
26.07.2012, 12:21     Интересный ЛистВью
Ответ Создать тему
Опции темы

Текущее время: 18:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru