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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Повернуть view на 90 градусов http://www.cyberforum.ru/android-dev/thread1257965.html
Разметка XML выглядит так (скрин 1). При создании активити, в коде, я делаю так View ads = findViewById(R.id.Button1); ads.setRotation(270); После прохождения этого места кода, приложение выглядит так (скрин 2). Как мне сделать чтоб, виджет полностью прилегал к левой стороне и игровое поле полностью до него расстягивалось??? Вариант перегрузки onDraw не предлогать, так как я собираюсь...
Программирование Android Selendroid Доброго времени суток! Может ошибся разделом - исправте. Начал я разбираться с Selendroid (раньше я писал тесты на Selenium WebDriver под обычное веб-приложение), ну а с андроидом встречаюсь можно сказать впервые. Естественно, что куда писать - понятия не имею. Может у кого то есть опыт с этим, если не трудно - поделитесь кусочком кода или полезной ссылкой. http://www.cyberforum.ru/android-dev/thread1257861.html
Программирование Android Как в виджете отловить, что экран повернулся
Во собственно и все. Какое событие нужно ловить? Спасибо.
Отправка данных из локальной базы на сервер Программирование Android
Здравствуйте. Нужна помощь, есть локальная база в приложении, в которую в процессе работы заносятся некоторые данные. Подскажите пожалуйста как организовать отправку данных из этой базы в базу которая находится на сервере. Может есть какие-то библиотеки? Плюс как работать с потерей соединения (ну это как бонус). Заранее благодарю. Может где, что почитать?
Программирование Android MediaPlayer не хочет умирать http://www.cyberforum.ru/android-dev/thread1257667.html
Дано: Приложение с несколькими активити Задача: Запустить фоновую музычку при запуске приложения, поддерживать её проигрывания во всех активити, во время загрузок. Попытки: MediaPlayer меня вообще удивил, когда он продолжил играть, даже когда приложение умерло. Затем я попытался глушить его в методе onDestroy() - вроде бы норм, но при выходе через "Home" музыка продолжала играть....
Программирование Android Передача HttpClient как параметр Есть страница которая отдает Json только если пользователь авторизирован. Для авторизации я отправляю логин и пароль на другую страницу, а потом загружаю данные. Для отправки запроса и скачивания использую AsyncTask. Для авторизации создал отдельный класс, но если использовать его, то вход не происходит. Вот код который работает(без отдельного класса) new AsyncTask<Void, Void, Void>() { ... подробнее

Показать сообщение отдельно
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
18.09.2014, 10:37     Customs adapter listView
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.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru