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

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

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

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

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

Добавлено: 14 янв 2015, 04:38
vitaliy
А откуда берется полоска внизу каждого TextView, где она и что это? Какая - то 9.png?

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

Добавлено: 14 янв 2015, 08:26
klblk
Это относится не к TextView, а к самому ListView. Разделитель, в данном случае по умолчанию, можно установить свой методом setDivider. Вроде так, если я правильно вопрос понял.

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

Добавлено: 14 янв 2015, 10:35
vitaliy
Да спасибо. Полезу внутрь посмотрю что она изсебя представляет.

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

Добавлено: 23 янв 2015, 17:37
lisensei
Здравствуйте. Как я понял ListView можно присвоить только один адаптер, подскажите как можно реализовать экран подобного вида?
http://cs623618.vk.me/v623618530/1b1cf/fItK64dHfkk.jpg
Я к тому не создавать же мне кучу ListView со своими адаптерами и кучу обработчиков к ним.. Может выходом будет ScrollView.. ?

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

Добавлено: 26 янв 2015, 07:22
klblk
ScrollView в данном случае будет нормальным выходом.

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

Добавлено: 26 янв 2015, 10:45
Stashevckiy
Ребята, нужна ваша консультация. Есть ListView, который содержит собственный лаяут айтэма. Айтем содержит в себе элементы Button и Text. По нажатию на выше указанную кнопку(не на элемент списка!) происходит добаление нового айтэма в список( т.е., кнопка имеет свой отдельный обработчик нажатия). А проблема, с которой я столкнулся, вот в чем: после добаления очередного пункта в список, все выше лежащие айтемы должны неким образом изменить свое состояние, а именно должна измениться иконка кнопки в каждом элементе списка, расположенного над последним элементом.

Обобщив все выше изложеное, вопрос приобретает такой вид: как можно получить доступ к реальным View - которые содержаться в лаяуте элемента списка для последующего взаимодействия с ними( изменения, обновления и т.д ). Каков вообще правильный механизм нужно использовать в android для осуществления выше указанных действий?

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

Добавлено: 26 янв 2015, 13:28
Foenix
правильный механизм - работа с данными. Меняй данные, поменяется список.

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

Добавлено: 26 янв 2015, 16:56
Stashevckiy
Foenix писал(а):правильный механизм - работа с данными. Меняй данные, поменяется список.
Пошел по данному пути - все ОК! Спасибо!

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

Добавлено: 26 янв 2015, 21:14
Foenix
приятно общаться с умными и понятливыми!

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

Добавлено: 27 янв 2015, 00:25
doter.ua
Foenix писал(а):приятно общаться с умными и понятливыми!
Странно, я вроде не отписывался в этой теме.

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

Добавлено: 27 янв 2015, 12:25
svirfneblyn
Добрый день! Подскажите как правильно написать адаптор.

У меня есть уже готовая БД, откуда я для ListView буру данные. Но я как то криво беру и в лист ложатся ссылки на записи в бд, а не сами записи.
результат вывода листвью :
Изображение

listActivity формируется так :

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

 //some code 
private List<Movies> movieses;
    private QuotesDataSource qDataSource;
//some code
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.quotes_list_iew);
          Log.d(TAG, "after open");
         (this.qDataSource= new QuotesDataSource((Context)this)).open();
           movieses = this.qDataSource.getAllMovies();
           this.setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, this.movieses));
//some code



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

dataSource :
public class QuotesDataSource {
   //some code
    private String[] allMoviesColumns;
    private SQLiteDatabase database;
    private DbHelper dbHelper;
    private String TAG;
    public QuotesDataSource(final Context context) {
        super();
       
        this.allMoviesColumns = new String[] { "_id", "name" };
        this.dbHelper = new DbHelper(context);
    }
// тут беру все записи из таблицы :

 public List<Movies> getAllMovies() {
        final ArrayList<Movies> list = new ArrayList<Movies>();
        final Cursor query = this.database.query("movies", this.allMoviesColumns, (String)null, (String[])null, (String)null, (String)null, (String)null);
        query.moveToFirst();
        while (!query.isAfterLast()) {
            list.add(this.cursorToMovie(query));
            query.moveToNext();
        }
        query.close();
        return list;
    }
сам адаптор :

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

public class QuotesAdapter extends BaseAdapter {
    private final Context context;
    private ArrayList<Movies> objects;
    LayoutInflater lInflater;
public QuotesAdapter (Context context, ArrayList<Movies> objects){
    super();
    this.context = context;
    this.objects = objects;
    lInflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
    @Override
    public int getCount() {
        return this.objects.size();
    }

    @Override
    public Object getItem(int position) {
        return  this.objects.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            view = lInflater.inflate(R.layout.quotes_list_iew, parent, false);
        }
        final Movies quote = this.objects.get(position);

        final TextView textView = new TextView(this.context);
    //     view.findViewById(R.id.quotesListView).setText(quote.getName().toString()); 
       
        return (View)textView;
    }
}
При попытке расширить ListActivity - ругается на то, что layout файл должен содержать стандартный android id =list.
Или правильнее будет расширяться от обычного Activity ?

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

Добавлено: 05 фев 2015, 15:51
aleksbim
Помогите пжл разобраться
smoothScrollToPosition() исправно прокручивает на android 2.1 и 2.3, но бездействует на android 4.1 и 4.3

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

Добавлено: 22 фев 2015, 10:14
Petrik
1. Можно ли, что б при нажатии (нажал - отпустил, не зажимал) на пункт списка, менялся его фон, причём на разные пункты списка, разный фон?
(Пожалуйста, если не затруднит напишите с кодом и куда его прописывать. Весь день сижу, не могу разобраться, вроде как то через адаптер можно? Уроки пересматривал, но так и не понял).

Научился "разукрашивать" весь список, а как же всё таки проделывать такое с отдельными пунктами?

2. Можно ли сделать так, что бы одни пункты списка были TextView, а другие Button?

3. Я так понял для одного ListView нужно создавать одно Activity, а можно, что б в одном Activity при нажатии на разные кнопки на экран выводились разные ListView?

4. Сколько пунктов может максимально содержать ListView и будет ли это как то влиять на производительность?

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

Добавлено: 29 мар 2015, 14:00
Rikie
Всем привет! Подскажите пожалуйста, что происходит с элементами списка которых не видно? Если элементов списка будет 1000, адаптер будет после создания хранить их всех в памяти, или созданные элементы после прокрутки будут удаляться?

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

Добавлено: 29 мар 2015, 14:05
doter.ua
Rikie писал(а):Всем привет! Подскажите пожалуйста, что происходит с элементами списка которых не видно? Если элементов списка будет 1000, адаптер будет после создания хранить их всех в памяти, или созданные элементы после прокрутки будут удаляться?
Будет заменяться контент. Текст вью как создался так и будет жить, а стринги из item будут подставляться новые.

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

Добавлено: 29 мар 2015, 14:07
Rikie
doter.ua писал(а): Будет заменяться контент. Текст вью как создался так и будет жить, а стринги из item будут подставляться новые.
Спасибо! Теперь все стало на свои места)

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

Добавлено: 29 мар 2015, 17:36
Foenix
http://stackoverflow.com/questions/1591 ... it-handled
вот тут на картинке описано что происходит.

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

Добавлено: 03 апр 2015, 10:24
pro2on
Добрый день, подскажите, пожалуйста, в какую сторону копать.

Заткнулся на реализации экрана : есть записи в базе данных - учет событий и объема выпитой воды. Если вытаскивать их в ListView, то будет что-то такого вида:

2015-03-30 10:00 вода 300 мл
2015-03-30 11:00 чай 200 мл
2015-03-30 11:30 чай 350 мл
2015-04-01 09:00 сок 200 мл

Это все получается. Есть база. Есть asynctaskloader. Есть cursoradapter.

Хотелось бы получить список с суммой каждого дня, например:

2015-03-30 всего:1050 мл.
10:00 вода 300 мл
11:00 чай 200 мл
11:30 чай 350 мл

2015-04-01 всего:200л.
09:00 сок 200 мл

И тут мозг сломался. Это реализуется в ListView или нет? Если да, то можно предположить, вытягивать из базы данные, суммировать их, формировать arralist и подсовывать его ArrayListAdapter. А в getview делать таблицу и напихивать ее конкретными значениями. Но тогда элементы ListView будут разного размера... И как тогда реализовывать onitemclicklestener на каждом элементе, что бы изменить данные?

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

Добавлено: 03 апр 2015, 13:45
Foenix
Делаешь так. Формируй курсор запросом (это самое важное, никаких подсчетов и перегонок в массивы) так, чтоб в нем еще были нужные колонки с суммами, т.е суммы фактически будут повторяться для каждой группы в твоем курсоре. Обязательно отсортируй записи.
Сформируй xml строки состоящее из 2 строк - основная, и суммирование под ней. Те два лэйаута. Сделай 1 видимым, а второму gone.
Затем в адаптере в методе getview проверяй следующее значение суммы в курсоре за текущей строкой. Если след. Сумма уже разнится, значит пошла следующая группа. Тогда при переходе ты делаешь 2му лэйауту с суммами visible. Иначе gone.
Таким образом можно формировать и заголовки 'подгрупп'