Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
CoMMoN86
-8 / 2 / 1
Регистрация: 18.05.2013
Сообщений: 503
1

Custom adapter и обработка нажатия и переход в следующее активити

30.05.2017, 15:29. Просмотров 885. Ответов 7
Метки нет (Все метки)

Доброго времени суток уважаемые форумчане,
проблема вот в чом написал программу все работает отлично, но затребовалось прикрутить picasso для подгрузки картинок, для этого пришлось писать, а точнее найти новый кастомный адаптер который практически без труда вкрутился в проект и работает, но при нажатии на item элемент он должен был перейти на следующий активити но вылазиет ошибка

Вот лог ошибка
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
05-30 11:11:23.817 7090-7090/ru.stavdevice.hungryhusband E/AndroidRuntime: FATAL EXCEPTION: main
                                                                           java.lang.ClassCastException: ru.stavdevice.hungryhusband.Product cannot be cast to java.util.HashMap
                                                                               at ru.stavdevice.hungryhusband.Listing$GetTraining$3.onItemClick(Listing.java:235)
                                                                               at android.widget.AdapterView.performItemClick(AdapterView.java:298)
                                                                               at android.widget.AbsListView.performItemClick(AbsListView.java:1086)
                                                                               at android.widget.AbsListView$PerformClick.run(AbsListView.java:2855)
                                                                               at android.widget.AbsListView$1.run(AbsListView.java:3529)
                                                                               at android.os.Handler.handleCallback(Handler.java:615)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                               at android.os.Looper.loop(Looper.java:137)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:4745)
                                                                               at java.lang.reflect.Method.invokeNative(Native Method)
                                                                               at java.lang.reflect.Method.invoke(Method.java:511)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                               at dalvik.system.NativeStart.main(Native Method)


Сам кастомный адаптер
Кликните здесь для просмотра всего текста
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
public class CustomListAdapter extends ArrayAdapter<Product> {
 
    ArrayList<Product> products;
    Context context;
    int resource;
 
    public CustomListAdapter(Context context, int resource, ArrayList<Product> products) {
        super(context, resource, products);
        this.products = products;
        this.context = context;
        this.resource = resource;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
 
        if (convertView == null){
            LayoutInflater layoutInflater = (LayoutInflater) getContext()
                    .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.list_item, null, true);
 
        }
        Product product = getItem(position);
 
        ImageView imageView = (ImageView) convertView.findViewById(R.id.imgIcon);
        Picasso.with(context).load(product.getImage())
                .error(R.drawable.error)
                .placeholder(R.drawable.loading) .into(imageView);
 
        TextView txtName = (TextView) convertView.findViewById(R.id.title);
        txtName.setText(product.getTitle());
 
        TextView txtPrice = (TextView) convertView.findViewById(R.id.ingrid);
        txtPrice.setText(product.getIngrid());
 
        return convertView;
    }
}


Там где у меня раньше был Click
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
 CustomListAdapter adapter = new CustomListAdapter(
                    Listing.this, R.layout.list_item, arrayList
            );
            lv.setAdapter(adapter);
            lv.setOnItemClickListener(itemClickListener);


Само нажатие и обработка
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                HashMap<String, Object> itemHashMap = (HashMap<String, Object>) parent.getItemAtPosition(position);
                String s_id = itemHashMap.get(SID).toString();
 
                Intent intent = new Intent(Listing.this, FullDishActivity.class);
                intent.putExtra("id", s_id); // more likely what you want
                startActivity(intent);
 
           
            }
        };


Помогите сделать клик ругается на
Кликните здесь для просмотра всего текста
Java
1
HashMap<String, Object> itemHashMap = (HashMap<String, Object>) parent.getItemAtPosition(position);
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2017, 15:29
Ответы с готовыми решениями:

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

Перенос данных на следующее активити
у меня по нажатию кнопки появляется некий результат в textView в этом же активити а как можно...

Переход между активити
Есть приложение, в котором сейчас активити идут друг за другом так: A -&gt; B -&gt; C -&gt; D Вот как...

Переход между активити
Есть переход с одной на другую при помощи кнопки, как реализовать выплывающее окно сбоку?

Переход по кнопке с фрагмента на активити
Парюсь с этим очень долго, никак не могу найти как осуществить переход по кнопке с фрагмена на...

7
korshun84
88 / 87 / 23
Регистрация: 08.07.2014
Сообщений: 548
30.05.2017, 15:37 2
Написано же:
Цитата Сообщение от CoMMoN86 Посмотреть сообщение
ru.stavdevice.hungryhusband.Product cannot be cast to java.util.HashMap
parent.getItemAtPosition(position) возвращает Product, а вы пытаетесь привести его к HashMap.
0
CoMMoN86
-8 / 2 / 1
Регистрация: 18.05.2013
Сообщений: 503
30.05.2017, 15:41  [ТС] 3
korshun84, как исправить то, у меня уже мозг плавится
0
korshun84
88 / 87 / 23
Регистрация: 08.07.2014
Сообщений: 548
30.05.2017, 15:50 4
Цитата Сообщение от CoMMoN86 Посмотреть сообщение
korshun84, как исправить то, у меня уже мозг плавится
Класс Product это у вас что вообще ?
Почему вы item к HashMap<String, Object> привести пытаетесь ?
0
CoMMoN86
-8 / 2 / 1
Регистрация: 18.05.2013
Сообщений: 503
30.05.2017, 16:09  [ТС] 5
korshun84, Вот сам Product
Кликните здесь для просмотра всего текста
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 Product {
    private String image;
    private String title;
    private String indrid;
 
    public Product(String image, String title, String indrid) {
        this.image = image;
        this.title = title;
        this.indrid = indrid;
    }
 
    public String getImage() {
        return image;
    }
 
    public void setImage(String image) {
        this.image = image;
    }
 
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
 
    public String getIngrid() {
        return indrid;
    }
 
    public void setIngrid(String indrid) {
        this.indrid = indrid;
    }
}

изначально работало так, но затем пришлось ставить кастомный адаптер и класс Product после этого упало нажатие, не знаю уже и как решить, неделю мучаюсь

Добавлено через 1 минуту
Цитата Сообщение от korshun84 Посмотреть сообщение
Почему вы item к HashMap<String, Object> привести пытаетесь ?
мне нужно передавать данные при помощи Intent на следующую активити другого примера не нашел.
0
korshun84
88 / 87 / 23
Регистрация: 08.07.2014
Сообщений: 548
30.05.2017, 16:15 6
Ну так в класс Product добавь поле sid и метод getsid() + в конструкторе класса допиши это поле и в итоге должно получится нечто такое:
Java
1
2
Product itemHashMap = (Product) parent.getItemAtPosition(position);
String s_id = itemHashMap.getsid().toString();
1
CoMMoN86
-8 / 2 / 1
Регистрация: 18.05.2013
Сообщений: 503
30.05.2017, 16:20  [ТС] 7
korshun84, а вы можете мне помочь это сделать , я предоставлю файлы в личку, оочень нужно, как раз буду знать как вообще выглядит то что хотел и не получалось
0
korshun84
88 / 87 / 23
Регистрация: 08.07.2014
Сообщений: 548
30.05.2017, 16:31 8
Лучший ответ Сообщение было отмечено CoMMoN86 как решение

Решение

Смысл ? Надо 3 строки добавить и одну изменить:
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
public class Product {
    private String image;
    private String title;
    private String indrid;
//---
private String sid;
 
    public Product(String image, String title, String indrid, String sid) {
        this.image = image;
        this.title = title;
        this.indrid = indrid;
//---
this.sid = sid;
    }
 
    public String getImage() {
        return image;
    }
 
    public void setImage(String image) {
        this.image = image;
    }
 
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
 
    public String getIngrid() {
        return indrid;
    }
 
    public void setIngrid(String indrid) {
        this.indrid = indrid;
    }
//---
public String getSid() {
        return sid;
    }
}
Меняешь, далее, там, где ты наполняешь свой List значениями, у тебя вылезет ошибка, надо будет просто в конструктор класса Product дописать 4ю переменную со значением этого самого sid.
1
30.05.2017, 16:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2017, 16:31

Переход на другой активити (список)
Привет всем) Сделал список в приложении, но не получается сделать переход на другой активити при...

Переход через фрагмент на активити
Добрый день ! Какой код должен быть чтобы на &quot;активити 1&quot; с открытым фрагментом , на котором есть...

Заблокировать переход к прошлому активити
Доброго времени суток. Возник вопрос: а как можно заблокировать переход к предыдущему активити...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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