Страница 2 из 16

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

Добавлено: 15 авг 2012, 10:27
math64
Начало должно быть так:

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

<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; Массив строк можно задать в виде ресурса (так проще, чем самому читать файл) - его можно будет отдать конструктору адаптера.

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

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

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

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

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

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

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

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

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

Добавлено: 20 авг 2012, 10:26
math64
getFirstVisiblePosition() - получаешь первую видимую строку.
setSelection() установит выбранную строку первой на экране
В setSelectionFromTop() дополнительно можно указать y выбранной строки

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

Добавлено: 20 авг 2012, 11:32
k.chaiko
как можно в листвью сделать элемент выбранным ??(подсветить) адаптер кастомный, setItemChecked почему-то не работает..

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

Добавлено: 20 авг 2012, 11:48
rezak90
k.chaiko писал(а):как можно в листвью сделать элемент выбранным ??(подсветить) адаптер кастомный, setItemChecked почему-то не работает..
обработать onClick на ListView и в адаптере поменять лейаут выбранной айчейки, или же если в лейауте ячейки например один компонент TextView то поменять его атрибут background

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

Добавлено: 20 авг 2012, 12:49
KamiSempai
rezak90 писал(а):
k.chaiko писал(а):как можно в листвью сделать элемент выбранным ??(подсветить) адаптер кастомный, setItemChecked почему-то не работает..
обработать onClick на ListView и в адаптере поменять лейаут выбранной айчейки, или же если в лейауте ячейки например один компонент TextView то поменять его атрибут background
Не слишком ли это мудрено? Может лучше стоит установить соответствующий режим выбора с помощью setChoiceMode.

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

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

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

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

Сам же отвечу на свой вопрос. Cursor + Adapter + SQLiteOpenHelper.

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

Добавлено: 20 авг 2012, 15:24
KamiSempai
math64 писал(а):KamiSempai - а вот у GridView нет setChoiceMode.
Ну речь же шла о ListView :P

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

Добавлено: 03 сен 2012, 22:52
Xpert043
а вот как в данном примере выдрать из массива строк только со второго по пятое имя, и вывести в список?

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

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

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

Добавлено: 04 сен 2012, 08:42
rezak90
создать новый массив String[] в который скопировать строки со второго по пятую и передать адаптеру.

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

Добавлено: 04 сен 2012, 08:48
math64

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

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

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

Добавлено: 04 сен 2012, 20:22
Xpert043
rezak90,
math64,

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

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

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

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

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

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

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

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

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