Урок 54. Кастомизация списка. Создаем свой адаптер

Обсуждение уроков
sh_rv
Сообщения: 18
Зарегистрирован: 11 сен 2013, 18:15

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение sh_rv » 25 окт 2013, 00:31

damager82 писал(а):
Katran писал(а):Подскажите, пожалуйста, как сделать одиночный выбор в списке?
Урок 43. Или вам в своем адаптере это сделать надо?
Да, подскажите, как сделать в своём адаптере

sh_rv
Сообщения: 18
Зарегистрирован: 11 сен 2013, 18:15

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение sh_rv » 26 окт 2013, 17:26

sh_rv писал(а):
damager82 писал(а):
Katran писал(а):Подскажите, пожалуйста, как сделать одиночный выбор в списке?
Урок 43. Или вам в своем адаптере это сделать надо?
Да, подскажите, как сделать в своём адаптере
Ну помоги те же кто нибудь, проект стоит на месте

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение Foenix » 26 окт 2013, 22:16

да по уроку делай, в чем проблема не пойму? В чем именно проблема?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

sh_rv
Сообщения: 18
Зарегистрирован: 11 сен 2013, 18:15

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение sh_rv » 26 окт 2013, 22:21

Foenix писал(а):да по уроку делай, в чем проблема не пойму? В чем именно проблема?
Как сделать одиночный выбор в своём адаптере. Со множественным выбором проблем вообще никаких

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение Foenix » 26 окт 2013, 22:36

это все ведь уроке есть. Поэтому я не понимаю в чем проблема.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

sh_rv
Сообщения: 18
Зарегистрирован: 11 сен 2013, 18:15

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение sh_rv » 26 окт 2013, 23:03

Foenix писал(а):это все ведь уроке есть. Поэтому я не понимаю в чем проблема.
ну значит есть проблема, раз прошу помочь

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

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение KamiSempai » 26 окт 2013, 23:24

Тут смекалка нужна :)
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

sh_rv
Сообщения: 18
Зарегистрирован: 11 сен 2013, 18:15

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение sh_rv » 26 окт 2013, 23:30

KamiSempai писал(а):Тут смекалка нужна :)

спасибо, помог от души!

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

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение KamiSempai » 27 окт 2013, 01:09

Я серьезно. Такого примера в уроках нет и в стандартных компонентах тоже, так как работа RadioGroup на списки не распространяется. Так что придется придумывать самому.

Я бы, например, хранил ID выбранного пункта в переменной.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение Foenix » 27 окт 2013, 01:17

ну как это нет? http://startandroid.ru/ru/uroki/vse-uro ... -list.html
Изображение
Вот одиночный выбор..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

sh_rv
Сообщения: 18
Зарегистрирован: 11 сен 2013, 18:15

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение sh_rv » 27 окт 2013, 02:02

Foenix писал(а):ну как это нет? http://startandroid.ru/ru/uroki/vse-uro ... -list.html
Изображение
Вот одиночный выбор..
Как этот выбор в своём адаптере реализовать?
Вот и я не знаю. Ладно спасибо, буду сам экспериментировать

mr.Dream
Сообщения: 1
Зарегистрирован: 30 окт 2013, 09:54

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение mr.Dream » 30 окт 2013, 09:57

Foenix писал(а):
rezak90 писал(а):так тогда в чём проблема передать ResultSet в адаптер и там уже его разбирайте в getView и заполняйте как захотите (только тогда уже использовать придётся не SimpleCursorAdapter а другой обычный).
а как его передать? а так можно?
в какой обычный? cursoradapter? а почему не SimpleCursorAdapter?
Не подскажите, как в итоге у вас получилось обработать ResultSet?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение Foenix » 30 окт 2013, 19:28

нет, я resultset передавала в метод db helper-а, а затем его записывала в бд, ну а потом данные уже использовала как обычно.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Петр
Сообщения: 2
Зарегистрирован: 10 ноя 2013, 16:44

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение Петр » 10 ноя 2013, 17:14

Здравствуйте. Не могли бы Вы помочь со следующим вопросом: как сделать так, чтобы при повороте экрана не пропадали галочки в чекбоксах?

Заранее спасибо.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение Foenix » 10 ноя 2013, 18:04

Запоминать эти галочки и перерисовывать при повороте экрана заново.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Петр
Сообщения: 2
Зарегистрирован: 10 ноя 2013, 16:44

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение Петр » 10 ноя 2013, 18:53

Foenix, ну это то понятно. А вот как именно перерисовывать? точнее где?

и еще, как лучше запоминать, с помощью Preferences или через Save/Restore?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение Foenix » 10 ноя 2013, 20:35

что ты, запоминать в постоянной памяти не надо... просто где у тебя там запоминается? в массив? вот с него и нужно восстанавливать при переворачивании. Какие события случаются во время переворачивания устрйоства? почитай в уроках, начиная с 91го..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Mamapapa
Сообщения: 7
Зарегистрирован: 10 окт 2013, 15:55

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение Mamapapa » 13 ноя 2013, 14:36

Помогите пожалуйста уже голову сломал как сделать не знаю!

Вообщем, у меня почти так же как в примере, только есть в место картинки кнопка. И хотелось что бы по нажатию на нее удалялся целый item, которому принадлежит кнопка. Как можно это реализовать???

А еще по элементу item, хотел что бы вызывался активити

drakaris
Сообщения: 9
Зарегистрирован: 17 окт 2013, 12:20

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение drakaris » 19 ноя 2013, 20:31

Добрый день! Такой вопрос: на сайт идет запрос, возвращается xml-ка, парсится, создается массив, который передается в адаптер.
Бывает такое, что данных довольно много и всех их не охота передавать за один раз, соответственно по кнопке Вперед-Назад, осуществляется навигация и запросы к сайту. Если же в списке данные уже хранятся (например пользователь нажал Вперед, затем Назад, потом опять Вперед), то как можно в адаптере указать, что в ListView нужно загружать данные из ArrayList из определенного промежутка (startIndex, endIndex, например).
Пробовал в методе getView указать проверку на индексы, но приложение вылетает. Можно ли как-то это реализовать. Спасибо всем!

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

@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		
		// В список добавляются только те элементы которые находятся в рамках индексов
		if (position < startIndex || position > endIndex) return null; // В такой ситуации приложение вылетает, это и понятно.
                // посколькy возвращается null
		// Используем заранее созданный view
		View view = convertView;
		if (view == null){
			view = this.lInflater.inflate(R.layout.book_item,parent,false);
		}
		
		Book b = getBook(position);
		TextView tv = (TextView)view.findViewById(R.id.authorName);
		tv.setText(b.author);
		
		tv = (TextView) view.findViewById(R.id.bookName);
		tv.setText(b.name);
		
		// Назначаем обработчик для чекбокса
		CheckBox chBox = (CheckBox)view.findViewById(R.id.basketChk);
		chBox.setOnCheckedChangeListener(this);
		// В тэг чекбокса пишем позицию в списке
		chBox.setTag(position);
		chBox.setChecked(b.getStatus());
		return view;
	}

sae74
Сообщения: 31
Зарегистрирован: 28 фев 2013, 15:14

Re: Урок 54. Кастомизация списка. Создаем свой адаптер

Сообщение sae74 » 27 ноя 2013, 10:06

Добрый день.
Прошу помощи по реализации BaseAdapter + ListView + sqlite

Сделал кастомный адаптер, ListView отображает данные с sqlite.
При выборе значения из ListView я получаю ID в самом ListView, а мне нужно из Базы Данных.
SimpleCursorAdapter - у меня все работает, но с ним не получается сделать кастомный адаптер.

Вот как я реализовал, все сделано на примере из интернета.

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

package MobiTorg.Test.Poltava;

public class List_Tovar {
	 /**
     * ID
     */
    String TMC_id;
	 /**
     * Товар
     */
    String TMC;
 
    /**
     * Цена
     */
    String TMC_Cena;
    /**
     * Количество
     */
    String TMC_KolVo;
 
    /**
     * Конструктор создает новый элемент в соответствии с передаваемыми
     * параметрами:
     * * @param id - id
     * @param t - товар
     * @param s - цена
     * @param i - количество
     */
    List_Tovar(String id, String t, String c, String i){
    	this.TMC_id=id;
        this.TMC=t;
        this.TMC_Cena=c;
        this.TMC_KolVo=i;
    }

    public String getHeader() {
        return TMC;
    }
    public void setHeader(String header) {
        this.TMC = header;
    }
    public String getSubHeader() {
        return TMC_Cena;
    }
    public void setSubHeader(String subHeader) {
        this.TMC_Cena = subHeader;
    }
}

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

package MobiTorg.Test.Poltava;

import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class List_Adapter extends BaseAdapter {
	ArrayList<List_Tovar> data = new ArrayList<List_Tovar>();
	Context context;

	public List_Adapter(Context context, ArrayList<List_Tovar> arr) {
		if (arr != null) {
			data = arr;
		}
		this.context = context;
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return data.size();
	}

	@Override
	public Object getItem(int num) {
		// TODO Auto-generated method stub
		return data.get(num);
	}

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

	@Override
	public View getView(int i, View someView, ViewGroup arg2) {
		LayoutInflater inflater = LayoutInflater.from(context);
		if (someView == null) {
			someView = inflater.inflate(R.layout.list_tovar, arg2, false);
		}
		TextView TMC = (TextView) someView.findViewById(R.id.TMC);
		TextView TMC_Cena = (TextView) someView.findViewById(R.id.TMC_Cena);
		TextView TMC_KolVo = (TextView) someView.findViewById(R.id.TMC_KolVo);
		TextView TMC_id = (TextView) someView.findViewById(R.id.TMC_id);

		TMC.setText(data.get(i).TMC);
		TMC_Cena.setText(data.get(i).TMC_Cena);
		TMC_KolVo.setText(data.get(i).TMC_KolVo);
		TMC_id.setText(data.get(i).TMC_id);
		return someView;
	}

}
Так я заполняю адаптер данными

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

		
ArrayList<List_Tovar> data = new ArrayList<List_Tovar>();
*****************

if (cursor.moveToFirst()) {
			do {
				data.add(new List_Tovar(cursor.getString(cursor
						.getColumnIndex(DB.TOVAR_COLUMN_ID)),
						cursor.getString(cursor
								.getColumnIndex(DB.TOVAR_COLUMN_NAME)),
						cursor.getString(cursor
								.getColumnIndex(DB.TOVAR_COLUMN_OSTATOKF2)),
						cursor.getString(cursor.getColumnIndex(Cena_Tabl))));
			} while (cursor.moveToNext());
		}

		cursor.close();
		lv = (ListView) this.findViewById(R.id.listTMC);
		lv.setAdapter(new List_Adapter(this, data));

********************

                 // нажатие на элемент
		 lv.setOnItemClickListener(new OnItemClickListener() {
		 @Override
		 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
		 long id) {			 
			 Log.d(LOG_TAG, "*********************************************itemSelect: id = " +id);
		 //VyborTovara(id);
		 }
		 });
Как мне получить id из базы данных, или значение TMC_id из ListView (которое я тоже не знаю как получить)?

Ответить