Урок 42. Список - ListView

Обсуждение уроков
math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 42. Список - ListView

Сообщение math64 » 15 авг 2012, 10:27

Начало должно быть так:

Код: Выделить всё

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
Дальше лучше так:

Код: Выделить всё

<CheckedTextView android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1.0" .../>
<LinearLayout android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="2.0" ... >
</LinearLayout>
CheckedTextView будет в два раза уже, чем LinearLayout.

Если создать MyListView extends ListView и в конструкторе заполнить данными, и поместить <ru.myapp.MyListView ...> в main.xml вместо <ListView ...> уже в редакторе можно будет посмотреть заполненный список.
На счет CheckedTextView: можно использовать обычный TextView, задав изовражение слева в виде чекбокса, обрабатывая клик по нему самостоятельно.
На счет использования файла: ты должен открыть его сам, разпарсить и загрузить в массив Strings[] items или списаок List<String> items; Массив строк можно задать в виде ресурса (так проще, чем самому читать файл) - его можно будет отдать конструктору адаптера.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение rezak90 » 16 авг 2012, 12:17

Как то появился такой интересный вопрос: как сделать движение самой ячейки списка? Трудно объяснить что я хочу но попытаюсь. Вот есть список, и зажимаем ячейку списка и например перетягиваем на одну позицию в верх или ещё выше или вообще куда захотим. Просто видел как на IOS такое делали с лёгкостью и я вот подумал можно ли такое на дроиде сделать. Будут у кого какие мысли?
R.id.team
Политика на форуме запрещена

k.chaiko
Сообщения: 21
Зарегистрирован: 02 авг 2012, 17:23

Re: Урок 42. Список - ListView

Сообщение k.chaiko » 16 авг 2012, 12:19

rezak90 писал(а):Как то появился такой интересный вопрос: как сделать движение самой ячейки списка? Трудно объяснить что я хочу но попытаюсь. Вот есть список, и зажимаем ячейку списка и например перетягиваем на одну позицию в верх или ещё выше или вообще куда захотим. Просто видел как на IOS такое делали с лёгкостью и я вот подумал можно ли такое на дроиде сделать. Будут у кого какие мысли?
Со списком врядли, это похоже какая-то анимация с табами, но тоже сложно сказать как это делается..

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 42. Список - ListView

Сообщение AndreyI » 16 авг 2012, 12:29

rezak90 писал(а):Как то появился такой интересный вопрос: как сделать движение самой ячейки списка? Трудно объяснить что я хочу но попытаюсь. Вот есть список, и зажимаем ячейку списка и например перетягиваем на одну позицию в верх или ещё выше или вообще куда захотим. Просто видел как на IOS такое делали с лёгкостью и я вот подумал можно ли такое на дроиде сделать. Будут у кого какие мысли?
Есть такое. Видел в Инете несколько реализаций drag and drop для ListView, есть даже оформленные в виде библиотек, которые можно прицепить к проекту.

romany4
Сообщения: 1
Зарегистрирован: 20 авг 2012, 09:12

Re: Урок 42. Список - ListView

Сообщение romany4 » 20 авг 2012, 09:23

Здравствуйте!
подскажите пжл, как можно реализовать прокрутку к верхней границе строки внутри listview
т.е. например юзер делает скролл, список скролится и останавливается так чтобы первая верхняя строка появлялась полностью, ну и ее выбор был обусловлен % видимости этой строки (если больше 50, то ее , если меньше то прокрутка к верхней границе следующей)
заранее благодарен за описание данного механизма))

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 42. Список - ListView

Сообщение math64 » 20 авг 2012, 10:26

getFirstVisiblePosition() - получаешь первую видимую строку.
setSelection() установит выбранную строку первой на экране
В setSelectionFromTop() дополнительно можно указать y выбранной строки

k.chaiko
Сообщения: 21
Зарегистрирован: 02 авг 2012, 17:23

Re: Урок 42. Список - ListView

Сообщение k.chaiko » 20 авг 2012, 11:32

как можно в листвью сделать элемент выбранным ??(подсветить) адаптер кастомный, setItemChecked почему-то не работает..

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение rezak90 » 20 авг 2012, 11:48

k.chaiko писал(а):как можно в листвью сделать элемент выбранным ??(подсветить) адаптер кастомный, setItemChecked почему-то не работает..
обработать onClick на ListView и в адаптере поменять лейаут выбранной айчейки, или же если в лейауте ячейки например один компонент TextView то поменять его атрибут background
R.id.team
Политика на форуме запрещена

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 42. Список - ListView

Сообщение KamiSempai » 20 авг 2012, 12:49

rezak90 писал(а):
k.chaiko писал(а):как можно в листвью сделать элемент выбранным ??(подсветить) адаптер кастомный, setItemChecked почему-то не работает..
обработать onClick на ListView и в адаптере поменять лейаут выбранной айчейки, или же если в лейауте ячейки например один компонент TextView то поменять его атрибут background
Не слишком ли это мудрено? Может лучше стоит установить соответствующий режим выбора с помощью setChoiceMode.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 42. Список - ListView

Сообщение math64 » 20 авг 2012, 13:18

KamiSempai - а вот у GridView нет setChoiceMode. Как поступить в этом случае (если не делать как предложил rezak90)? Там пока жмешь на элемент, подсветка есть, как отпускаешь - пропадает. Если в эмуляторе выбираешь элемент стрелочками - подсветка остаётся (но другим цветом).

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение rezak90 » 20 авг 2012, 15:19

А вот вопросы/размышления для гуру кто когда то кодил/кодит на C#.
Так вот, там есть такой компонент как DataSet(если не ошибаюсь ибо кодил 100500 лет назад на шарпе), прекрасный компонент который сам вытаскивает данные с бд и заполняет ими таблицу и сам же потом редактирует.
Вопрос №1: существует что то подобное из выше сказанного в Java под андроид;
Вопрос №2: если ответ на №1 "нет" то возможно ли такая реализация через адаптер? то есть что бы адаптер сам вытягивал данные с бд и заполнял ими listview.

Сам же отвечу на свой вопрос. Cursor + Adapter + SQLiteOpenHelper.
Последний раз редактировалось rezak90 21 авг 2012, 17:04, всего редактировалось 3 раза.
R.id.team
Политика на форуме запрещена

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 42. Список - ListView

Сообщение KamiSempai » 20 авг 2012, 15:24

math64 писал(а):KamiSempai - а вот у GridView нет setChoiceMode.
Ну речь же шла о ListView :P
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Xpert043
Сообщения: 34
Зарегистрирован: 12 июн 2012, 20:13

Re: Урок 42. Список - ListView

Сообщение Xpert043 » 03 сен 2012, 22:52

а вот как в данном примере выдрать из массива строк только со второго по пятое имя, и вывести в список?

Код: Выделить всё

String[] names = { "Иван", "Марья", "Петр", "Антон", "Даша", "Борис",
      "Костя", "Игорь", "Анна", "Денис", "Андрей" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names);

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение rezak90 » 04 сен 2012, 08:42

создать новый массив String[] в который скопировать строки со второго по пятую и передать адаптеру.
R.id.team
Политика на форуме запрещена

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 42. Список - ListView

Сообщение math64 » 04 сен 2012, 08:48

Код: Выделить всё

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Arrays.asList(names).subList(2,6));

Xpert043
Сообщения: 34
Зарегистрирован: 12 июн 2012, 20:13

Re: Урок 42. Список - ListView

Сообщение Xpert043 » 04 сен 2012, 20:22

rezak90,
math64,

Спасибо воспользовался вариантом math64

sotnik
Сообщения: 12
Зарегистрирован: 11 сен 2012, 10:37

Re: Урок 42. Список - ListView

Сообщение sotnik » 11 сен 2012, 10:52

Есть список ListView по нажатию на пункт которого открывается WebView с текстом и кнопкой снизу "Добавить в избранное". Как сделать чтобы по нажатию на эту кнопку в список ListView#2 добавлялся этот пункт.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение rezak90 » 11 сен 2012, 10:58

sotnik писал(а):Есть список ListView по нажатию на пункт которого открывается WebView с текстом и кнопкой снизу "Добавить в избранное". Как сделать чтобы по нажатию на эту кнопку в список ListView#2 добавлялся этот пункт.
я правильно понял? есть список, по нажатию на ячейку выскакивает новое активити в котором есть webview and button, по нажатию на кнопку ссылка (или что то другое, не важно) должно сохранится и отобразится в listview предыдущей активти. Если так то просто нужно вернуть эту ссылку в предыдущее активити и добавить её в адаптер.
R.id.team
Политика на форуме запрещена

sotnik
Сообщения: 12
Зарегистрирован: 11 сен 2012, 10:37

Re: Урок 42. Список - ListView

Сообщение sotnik » 11 сен 2012, 12:29

Должно получится примерно вот так Изображение
listView "Избранное" должен содержать только те пункты из ListView "Основное" , в webVeiv которых была нажата кнопка "добавить в избранное"

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение rezak90 » 11 сен 2012, 13:28

так в чём проблема? то же самое что я описал сообщеним выше только результат не возвращаем в предыдущее активити, а создаём новое активити со списком который добавили в избранное. Опишу подробней сразу:
существует список ArrayList<String> primaryList; в котором содержатся данные из основного ListView, далее переходим в следующиее активти WebView и добавляем ссылки в "избранное" в новый список ArrayList<String> bookmark; и потом отображаем их в новом активти в списке ListView.
R.id.team
Политика на форуме запрещена

Ответить