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

Обсуждение уроков
Persik
Сообщения: 19
Зарегистрирован: 15 май 2014, 08:55

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

Сообщение Persik » 24 сен 2014, 13:23

klblk писал(а):
Persik писал(а):
Mikhail_dev писал(а):Вам нужен в адаптере метод getView где вы будете смотреть текущее время и в зависимости от времени делать манипуляции с текстом.
У меня есть еще вопросы. Как сделать ближайшие время, синий цветом и прошедшие время сделать прозрачным цветом как на рисунке 2.
Ответили же вам:
1) Получить текущее время
2) Сравнить текущее время с временем из вашего списка
3) В зависимости от того выполнилось условие или нет поменять цвет текста

Все это можно-нужно сделать в getView адаптера. В каком пункте затруднение?
Я новенькая. Вы бы не могли мне написать примеры.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

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

Сообщение klblk » 24 сен 2014, 13:56

Persik писал(а):
klblk писал(а):Ответили же вам:
1) Получить текущее время
2) Сравнить текущее время с временем из вашего списка
3) В зависимости от того выполнилось условие или нет поменять цвет текста

Все это можно-нужно сделать в getView адаптера. В каком пункте затруднение?
Я новенькая. Вы бы не могли мне написать примеры.
Как-то так:
[syntax=java]Calendar rightNow = Calendar.getInstance();
//получаем часы и минуты текущего времени
int curentHours = rightNow.get(Calendar.HOUR_OF_DAY);
int curentMin = rightNow.get(Calendar.MINUTE);
//получаем часы и минуты вашего времени (time[position])
String rowTime = time[position];
int hour = Integer.parseInt(rowTime.substring(0, 2));
int min = Integer.parseInt(rowTime.substring(3));
if ((hour * 60 + min) > (curentHours * 60 + curentMin)) {
label.setTextColor(Color.BLUE);
} else {
label.setTextColor(Color.GRAY);
}[/syntax]
Написано в блокноте, работоспособность не проверялась, но логика где-то рядом=).

Persik
Сообщения: 19
Зарегистрирован: 15 май 2014, 08:55

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

Сообщение Persik » 24 сен 2014, 14:16

Спасибо, пойду попробовать писать.... :))

Persik
Сообщения: 19
Зарегистрирован: 15 май 2014, 08:55

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

Сообщение Persik » 25 сен 2014, 05:56

klblk писал(а): Как-то так:
[syntax=java]Calendar rightNow = Calendar.getInstance();
//получаем часы и минуты текущего времени
int curentHours = rightNow.get(Calendar.HOUR_OF_DAY);
int curentMin = rightNow.get(Calendar.MINUTE);
//получаем часы и минуты вашего времени (time[position])
String rowTime = time[position];
int hour = Integer.parseInt(rowTime.substring(0, 2));
int min = Integer.parseInt(rowTime.substring(3));
if ((hour * 60 + min) > (curentHours * 60 + curentMin)) {
label.setTextColor(Color.BLUE);
} else {
label.setTextColor(Color.GRAY);
}[/syntax]
Написано в блокноте, работоспособность не проверялась, но логика где-то рядом=).
Спасибо, у меня получилось! Но, мне не понравилось листать listview. Как сделать, чтобы прошедшие и ближайшие время был по середине? Почему то время автоматический не обновляет?
Последний раз редактировалось Persik 25 сен 2014, 07:10, всего редактировалось 1 раз.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

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

Сообщение klblk » 25 сен 2014, 07:09

Persik писал(а):Спасибо, у меня получилось! Но, мне не понравилось листать listview. Как сделать, чтобы прошедшие и ближайшие время был по середине? Почему то время не обновляет?
1) у ListView есть метод smoothScrollToPosition(int position) (вроде он могу ошибиться), определяете ближайшее время и скролируете к позиции (номер в массиве), но вероятно скрол будет к вершине списка,чтобы оно было по середине вероятно придется поработать с вычитанием чего-нибудь откуда-нибудь.
2) А что вы делаете чтобы обновлять время? Ну и собственно что должно обновляться?

Persik
Сообщения: 19
Зарегистрирован: 15 май 2014, 08:55

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

Сообщение Persik » 25 сен 2014, 09:48

klblk писал(а): 1) у ListView есть метод smoothScrollToPosition(int position) (вроде он могу ошибиться), определяете ближайшее время и скролируете к позиции (номер в массиве), но вероятно скрол будет к вершине списка,чтобы оно было по середине вероятно придется поработать с вычитанием чего-нибудь откуда-нибудь.
2) А что вы делаете чтобы обновлять время? Ну и собственно что должно обновляться?
Вот написала, что то не выходит...
listView.smoothScrollToPosition(hour, min);
if(position <= listView.getFirstVisiblePosition()){
listView.smoothScrollBy( -1, min);
listView.smoothScrollToPosition( position );
}

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

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

Сообщение klblk » 25 сен 2014, 10:08

Ерунду какую-то пишете.
1) Делать это нужно скорее всего после присвоения ListView адаптера.
2) "Определить ближайшее время": а) получить текущее время б) в цикле сравнивать текущее время с элементами массива time, как только текущее время стало больше делаем listView.smoothScrollToPosition(i), где i итератор цикла, и выходим из цикла (break).

Persik
Сообщения: 19
Зарегистрирован: 15 май 2014, 08:55

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

Сообщение Persik » 25 сен 2014, 14:00

klblk писал(а):Ерунду какую-то пишете.
1) Делать это нужно скорее всего после присвоения ListView адаптера.
2) "Определить ближайшее время": а) получить текущее время б) в цикле сравнивать текущее время с элементами массива time, как только текущее время стало больше делаем listView.smoothScrollToPosition(i), где i итератор цикла, и выходим из цикла (break).
Черт, не получается :x. Вы не могли мне помочь написать код. Будьте добрый.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

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

Сообщение klblk » 25 сен 2014, 14:33

Persik писал(а):
klblk писал(а):Ерунду какую-то пишете.
1) Делать это нужно скорее всего после присвоения ListView адаптера.
2) "Определить ближайшее время": а) получить текущее время б) в цикле сравнивать текущее время с элементами массива time, как только текущее время стало больше делаем listView.smoothScrollToPosition(i), где i итератор цикла, и выходим из цикла (break).
Черт, не получается :x. Вы не могли мне помочь написать код. Будьте добрый.
Вчера вам написал, сегодня вам напишу, а завтра уйду на больничный кто писать код будет?
Пишите что конкретно из сказанного мной не ясно.
1) "Делать это нужно скорее всего после присвоения ListView адаптер" - это я понимаю, *описание того как понимаете*
2) "получить текущее время" - это я сделал так: *описание "так"*
3) "в цикле сравнивать текущее время с элементами массива time" - это чето совсем не понимаю...
и т.д. Както-то так.

finberg
Сообщения: 51
Зарегистрирован: 11 мар 2013, 14:20

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

Сообщение finberg » 25 сен 2014, 15:09

Добрый день.
Есть разметка, два фрагмента, слева список, справа фрагмент детализации. Если справа подредактировать данные и сохранить, то слева список сразу не показывает новые данные, а обновляет их только когда ячейка уходит из видимости и потом опять появляется. Пробовал notifyDataSetChanged() - не помогает. Как можно обновить список?
Спасибо!

Persik
Сообщения: 19
Зарегистрирован: 15 май 2014, 08:55

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

Сообщение Persik » 26 сен 2014, 07:06

У меня есть List View Android отображение класса таблицы времени. Я хочу, чтобы моя расписание автобуса автоматической прокрутки показал и обновлял в ближайшее время.
Вопрос
1) "Делать это нужно скорее всего после присвоения ListView адаптер" - это я понимаю, *описание того как понимаете*
2) "получить текущее время" - это я сделал так: *описание "так"*
3) "в цикле сравнивать текущее время с элементами массива time" - это чето совсем не понимаю...
Я не поняла. По подробнее объясните мне и как писать. Вы же давно здесь в форуме и думаю, что вы профессиональный опыт. А я лишь начинающий. Мне очень нужны расписание. Помоги мне, пожалуйста!!!

isachenko
Сообщения: 47
Зарегистрирован: 30 июл 2014, 21:43

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

Сообщение isachenko » 14 окт 2014, 22:00

Товарищи знатоки!
в коде подчёркивает точку и адаптер в строке lvMain.setAdapter(adapter);
[syntax=java5]package com.example.lvivguide;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class List extends Activity implements OnClickListener {

String[] names;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);


ListView lvMain = (ListView) findViewById(R.id.lvMain);


}


ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.names, R.layout.my_list_item);
lvMain.setAdapter(adapter);

@Override
public void onClick (View v) {

}

}
[/syntax]
что я тут не учла?
Спасибо.
Спасибо за уроки!

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

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

Сообщение klblk » 15 окт 2014, 07:24

[syntax=java]ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.names, R.layout.my_list_item);
lvMain.setAdapter(adapter);[/syntax]
это находится где-то в космосе. Поселите их хотя бы на планету "onCreate"


isachenko
Сообщения: 47
Зарегистрирован: 30 июл 2014, 21:43

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

Сообщение isachenko » 15 окт 2014, 15:40

klblk писал(а):[syntax=java]ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.names, R.layout.my_list_item);
lvMain.setAdapter(adapter);[/syntax]
это находится где-то в космосе. Поселите их хотя бы на планету "onCreate"
:D спасибо!
Спасибо за уроки!

isachenko
Сообщения: 47
Зарегистрирован: 30 июл 2014, 21:43

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

Сообщение isachenko » 17 окт 2014, 22:23

Господа!
Сделан рабочий список согласно уроку. Теперь нужно: выставить подготовленный в фотошопе background для каждого item пункта, без текста; обработать нажатое и зажатое состояние пунктов(при зажатии должен быть другой background).
Прошу дать наводку.
Спасибо!
Спасибо за уроки!

chebarasha
Сообщения: 2
Зарегистрирован: 30 сен 2014, 23:00

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

Сообщение chebarasha » 20 окт 2014, 16:41

Поставить БГ на View:
1) в Layout'е:

android:background = id drawable ресурса

2) из кода:

yourView.setBackgroundResource(id)


Длинное нажатие можешь обработать так:

GestureDetector.OnGestureListener

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

public class X extends Activity implements OnGestureListener {

    ...

    @Override
    public void onLongPress(MotionEvent e) {
        // ...
    }
}

Аватара пользователя
elron
Сообщения: 31
Зарегистрирован: 14 окт 2012, 13:29

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

Сообщение elron » 27 окт 2014, 14:54

Всем привет.
Подскажите пожалуйста как программно прокрутить список в самый низ ?

razmus
Сообщения: 82
Зарегистрирован: 26 мар 2013, 10:47

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

Сообщение razmus » 27 окт 2014, 15:08

elron писал(а):Всем привет.
Подскажите пожалуйста как программно прокрутить список в самый низ ?
http://stackoverflow.com/questions/7561 ... d-listview

llexa
Сообщения: 9
Зарегистрирован: 30 авг 2014, 16:19
Откуда: Красноярск

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

Сообщение llexa » 31 окт 2014, 15:09

Танцы с бубном при изучении к сожалению не отменить. Три дня пришлось потратить для изучения этого урока, даже не на изучения а на выяснения, что вызывает ошибки и только сейчас под вечер получилось. Так вот выяснилось, хоть запереписывайся и постоянно сохраняй, ошибки порой не исчезают а только добавляютса- но перезагрузка" Эклипс" творит чудеса...
Следущий этап:- подскажите где посмотреть как сделать переход из списка на активити.

PS/ Если не трудно могли бы вы на основании именно этого списка показать/обьяснить как это реализовывается?!!

Ответить