Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
RedFraction
1 / 1 / 0
Регистрация: 14.04.2014
Сообщений: 38
#1

Customs adapter listView - Программирование Android

18.09.2014, 00:04. Просмотров 784. Ответов 2
Метки нет (Все метки)

http://pastebin.ru/0GvfxEO8 помогите написать адаптер под данный item для listView. Толи мозгов, толи опыта мало. Надо - реализовать onClickListnerById, реализовать добавление в listView с помощью ".add", либо как с обычным адаптером - подгрузкой целого массива. Заранее благодарен. С меня бутылка пива если вы живете неподалеку от м. Домодедовская. Ссылки на сторонние ресурсы не сувать, так как почти всё что там есть однотипно.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2014, 00:04     Customs adapter listView
Посмотрите здесь:

TabHost, ListView и custom Adapter - Программирование Android
Здравствуйте. В общем есть TabHost c 3 вкладками. При нажатии на вкладку ХЗ показаться данные в ListView, но у меня при нажатии на эту...

Listview, adapter получение информации из нажатого элемента списка - Программирование Android
Есть список, который заполняется из базы данных. Мне нужно через контекстное меню удалить этот элемент из списка и исходя из информации,...

Ошибка The content of the adapter has changed but ListView did not receive a notification - Программирование Android
Прошу помощи, т.к. уже не знаю, что делать. Наверное нахватает знаний. На одном единственном телефоне постоянно вылетает ошибка Я...

Свой Adapter в свой Adapter - Программирование Android
Здравствуйте! В общем вопрос такой: у меня должно получить список в списке. Как то так: 1 10$ картошка сникерс ...

Adapter selector selected - Программирование Android
Пишу свой адаптер для списка. Для строк использую свой XML (устанавливаю в getView). Как подложку строки использую селектор для эфекта...

RecyclerView.Adapter загрузка изображения - Программирование Android
При прокрутке RecycleView в ImageView загружается необходимая фотография.. Но при прокрутке почему то начинаются не состыковки.. (как...

ListFragment вывод данных (adapter) - Программирование Android
Доброго дня! Я новичек в Android программировании. Попытался создать проект на основе шаблона NavigationDrawner и реализовал...

Adapter + auto scroling RecyclerView - Программирование Android
Всем привет! Начну сразу с постановки задачи: поступают данные, нам нужно поместить эти данные в RecyclerView, но чтоб не сразу все...

Crash Activity при присвоении ItemList-у Adapter-a - Программирование Android
Activity import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import...

ViewPager, adapter. Вывод картинки из массива ссылок - Программирование Android
Добрый день. Поставил библиотеку Glide, вроде бы все работает с выводом одной картинки. Пытаюсь сделать viewPager, который будет...

Пустой список после вызова adapter.notifyDataSetChanged - Программирование Android
При создании все норм. Пропадает только после обновления Фрагмент Context context; View v; ListView listView; ...

RecyclerView и java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter pos - Программирование Android
Добрый день! У меня есть RecyvlerView, который изумительно работает на всех устройствах, кроме Samsung. На Samsung я получаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
18.09.2014, 10:37     Customs adapter listView #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
RedFraction, ничего сложного. Сначала сделаем свой абстрактный адаптер.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//Чтобы адаптер не был привязан к какому-то конкретному типу данных
//мы воспользуемся generic.
public abstract class CommonAdapter<T> extends BaseAdapter {
 
    protected LayoutInflater inflater;
    //Наше хранилище данных
    private List<T> data = new ArrayList<T>();
 
    protected CommonAdapter(Context context) {
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
 
    public void setData(List<T> data) {
        setData(data, true);
    }
 
    public void setData(List<T> data, boolean clear) {
        if (clear) {
            this.data.clear();
        }
        this.data.addAll(data);
        notifyDataSetChanged();
    }
 
    public void removeData(T data) {
        if (data != null) {
            this.data.remove(data);
            notifyDataSetChanged();
        }
    }
 
    public void addData(List<T> data, boolean appendToBegin) {
        if (this.data == null) {
            this.data = new ArrayList<T>(data);
        } else {
            if (appendToBegin) {
                this.data.addAll(0, data);
            } else {
                this.data.addAll(data);
            }
        }
        notifyDataSetChanged();
    }
 
    @Override
    public int getCount() {
        return data != null ? data.size() : 0;
    }
 
    @Override
    public T getItem(int position) {
        return data != null && !data.isEmpty() ? data.get(position) : null;
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
}
Идём дальше. По Вашему коду попробуем создать модельку. Собственно это просто POJO.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.io.Serializable;
 
public class Product implements Serializable {
 
    private int id;
    private String productName;
    private double price;
    private int no;
    private int jps;
 
    public Product(int id, String productName, double price, int no, int jps) {
        this.id = id;
        this.productName = productName;
        this.price = price;
        this.no = no;
        this.jps = jps;
    }
 
    public Product() {
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getProductName() {
        return productName;
    }
 
    public void setProductName(String productName) {
        this.productName = productName;
    }
 
    public double getPrice() {
        return price;
    }
 
    public void setPrice(double price) {
        this.price = price;
    }
 
    public int getNo() {
        return no;
    }
 
    public void setNo(int no) {
        this.no = no;
    }
 
    public int getJps() {
        return jps;
    }
 
    public void setJps(int jps) {
        this.jps = jps;
    }
}
и теперь строим адаптер под эту модель.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class ProductAdapter extends CommonAdapter<Product> {
 
 
    protected ProductAdapter(Context context) {
        super(context);
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //Потом нужно будет добавить ViewHolder и переиспользовать второй аргумент чтобы небыло тормозов
        View rootView = inflater.inflate(R.layout.list_item, parent, false);
        Product product = getItem(position);
        TextView.class.cast(rootView.findViewById(R.id.tv_Product_shop)).setText(product.getProductName());
        //Ипользуем String.valueOf() так как передача int параметра будет восприниматься
        //как ссылка на strings.xml, а не как текст
        TextView.class.cast(rootView.findViewById(R.id.tv_Price_shop)).setText(String.valueOf(product.getPrice()));
        TextView.class.cast(rootView.findViewById(R.id.tv_no_shop)).setText(String.valueOf(product.getNo()));
        TextView.class.cast(rootView.findViewById(R.id.tv_JPS_shop)).setText(String.valueOf(product.getJps()));
        return rootView;
    }
}
Идём дальше. Чтобы реализовать onClick по элементу мы воспользуемся callback-ом.
Опишем интерфейс.

Java
1
2
3
4
5
public interface OnClickByObjectListener<T> {
    
    void onClick(T object);
    
}
и применим к адаптеру, чтобы он выглядел так.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class ProductAdapter extends CommonAdapter<Product> {
 
 
    private OnClickByObjectListener<Product> listener;
 
    public void setListener(OnClickByObjectListener<Product> listener) {
        this.listener = listener;
    }
 
    protected ProductAdapter(Context context) {
        super(context);
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //Потом нужно будет добавить ViewHolder и переиспользовать второй аргумент чтобы небыло тормозов
        View rootView = inflater.inflate(R.layout.list_item, parent, false);
        final Product product = getItem(position);
        rootView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (listener != null) {
                    listener.onClick(product);
                }
            }
        });
        TextView.class.cast(rootView.findViewById(R.id.tv_Product_shop)).setText(product.getProductName());
        //Ипользуем String.valueOf() так как передача int параметра будет восприниматься
        //как ссылка на strings.xml, а не как текст
        TextView.class.cast(rootView.findViewById(R.id.tv_Price_shop)).setText(String.valueOf(product.getPrice()));
        TextView.class.cast(rootView.findViewById(R.id.tv_no_shop)).setText(String.valueOf(product.getNo()));
        TextView.class.cast(rootView.findViewById(R.id.tv_JPS_shop)).setText(String.valueOf(product.getJps()));
        return rootView;
    }
}
Ну собственно всё. Остаётся во фрагменте/активити сделать листу setAdapter. и у адаптера вызвать setData/addData.
RedFraction
1 / 1 / 0
Регистрация: 14.04.2014
Сообщений: 38
18.09.2014, 23:57  [ТС]     Customs adapter listView #3
YuraAAA, Cпасибо огромное, не знаю как отблагодарить)
Yandex
Объявления
18.09.2014, 23:57     Customs adapter listView
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru