Страница 4 из 5

Re: Урок 46. События ExpandableListView

Добавлено: 04 мар 2015, 18:43
ptaxsa
Уважаемые форумчане!

Уточню свой предыдущий вопрос.
Не могу реализовать вызов активити в этом месте:

// нажатие на элемент
elvMain.setOnChildClickListener(new OnChildClickListener() {
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id)
{
Log.d(LOG_TAG, "onChildClick groupPosition = " + groupPosition +
" childPosition = " + childPosition +
" id = " + id);


Не воспринимает строку

Intent intent = new Intent(this, Report1.class);

Активити Report1 рабочее, а именно из указанного места(по выбору элемента) не дает возможности вызвать!!

Не найду в чем косяк.
Прошу о помощи!!!

Re: Урок 46. События ExpandableListView

Добавлено: 04 мар 2015, 19:07
doter.ua
"Не воспринимает строку" ни о чем не говорит. Логи ошибки в студию.

Re: Урок 46. События ExpandableListView

Добавлено: 04 мар 2015, 20:29
ptaxsa
doter.ua писал(а):
"Не воспринимает строку" ни о чем не говорит. Логи ошибки в студию.


Ошибка:
The constructor Intent(new ExpandableListView.OnChildClickListener(){}, Class<Report1>) is undefined

Предлагает убрать ссылку на класс

...
Intent intent = new Intent();
...

но как же тогда???

Re: Урок 46. События ExpandableListView

Добавлено: 04 мар 2015, 20:31
doter.ua
Report1 класс создавал? импортировал?

Re: Урок 46. События ExpandableListView

Добавлено: 04 мар 2015, 20:41
ptaxsa
Класс создан, определен в манифесте! Более того - он работает (без условия)
По условию хочу прописать вызов этого класса, но "не дает прописать"

Re: Урок 46. События ExpandableListView

Добавлено: 04 мар 2015, 21:46
doter.ua
класс целиком скинь (только используй теги "коде")

Re: Урок 46. События ExpandableListView

Добавлено: 04 мар 2015, 22:23
ptaxsa
doter.ua писал(а):класс целиком скинь (только используй теги "коде")
Да , ничего особенного. Простейшая структура на основе урока

package ru.startandroid.develop.p0461expandablelistevents;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class Report1 extends Activity {
LinearLayout llRep;
TextView textout;
TextView textName;
TextView textblank; // для пробела
WebView webView1;
String data1;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.rep);


webView1=(WebView)findViewById(R.id.webView1);
llRep = (LinearLayout) findViewById(R.id.llRep);


Intent intent = getIntent();

String Name = intent.getStringExtra("name"); // не используется


webView1.loadUrl("file:///android_asset/Lynx2201.htm"); // вывод текстовога файла

}
}


Полагаю что формат вызова Activity в elvMain.setOnChildClickListener должен быть другой. Или тот же Intent, но с определенным ньансом(формат, ключевое слово,...). Продолжаю биться в тудовом экстазе, должно что-то быть.....

Re: Урок 46. События ExpandableListView

Добавлено: 04 мар 2015, 23:57
ptaxsa
Вот оно!!! Нашел где собака порылась)

Вместо строки :
Intent intent = new Intent(this, Report1.class);

Нужно использовать :
Intent i=new Intent(getApplicationContext(), Report1.class);

Ну и потом уже запускать новое Activity:
startActivity(i);

Нашел здесь:
http://stackoverflow.com/questions/2629 ... e-listview

doter.ua, спасибо!

Всем творческих успехов!

Re: Урок 46. События ExpandableListView

Добавлено: 05 мар 2015, 08:35
klblk
Открою один Java секрет:
[syntax=java]Intent intent = new Intent(MyActivity.this, Report1.class); //MyActivity - исходная активити[/syntax]

Re: Урок 46. События ExpandableListView

Добавлено: 12 мар 2015, 18:11
ptaxsa
Господа!

Добавил файл html - все прекрасно. Но во время его просмотра нет возможности увеличить(приблизить) текст.
Как можно реализовать такую функцию?

Re: Урок 46. События ExpandableListView

Добавлено: 22 май 2015, 19:20
ISLI
Как реализовать чтоб при нажатии на элемент списка осуществлялся переход на другой Activity?

Re: Урок 46. События ExpandableListView

Добавлено: 22 май 2015, 19:58
doter.ua
ISLI писал(а):Как реализовать чтоб при нажатии на элемент списка осуществлялся переход на другой Activity?
В кастомном адаптере.

Re: Урок 46. События ExpandableListView

Добавлено: 25 авг 2015, 17:20
wamik
у меня вопрос. Возможно даже глупый.

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

String getGroupText(int groupPos) {
    return ((Map<String,String>)(adapter.getGroup(groupPos))).get(ATTR_GROUP_NAME);
В конце класса находятся методы, которые возвращают нам названия групп и элементов из коллекций по номеру группы или номеру элемента. Для этого используем методы адаптера getGroup и getChild, приводим их к Map и извлекаем значение атрибута с именем компании или телефона.
как я понял, метод getGroup() описан в классе SimpleExpandableListAdapter, и возвращает объект Object. ???
Как можно привести тип Object к типу Map<? extends ?> ??? Я, может Java плохо изучал, но знаю, что Map<? extends ?> можно привести к Object. А как объяснить обратное?

Re: Урок 46. События ExpandableListView

Добавлено: 26 авг 2015, 16:06
doter.ua
wamik писал(а):у меня вопрос. Возможно даже глупый.

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

String getGroupText(int groupPos) {
    return ((Map<String,String>)(adapter.getGroup(groupPos))).get(ATTR_GROUP_NAME);
В конце класса находятся методы, которые возвращают нам названия групп и элементов из коллекций по номеру группы или номеру элемента. Для этого используем методы адаптера getGroup и getChild, приводим их к Map и извлекаем значение атрибута с именем компании или телефона.
как я понял, метод getGroup() описан в классе SimpleExpandableListAdapter, и возвращает объект Object. ???
Как можно привести тип Object к типу Map<? extends ?> ??? Я, может Java плохо изучал, но знаю, что Map<? extends ?> можно привести к Object. А как объяснить обратное?
Не знаю что это за способы такие, но коллекция, передаваемая адаптеру, дает ему только ссылку на себя, т.е. можно в активити, зная groupID и childID достать из неё нужный элемент: myMap.get(groupID).get(childID).
З.Ы. могут быть несколько вариантов:
1) обработка в адаптере: тогда хранишь в нем ссылку на коллекцию из активити. например this.myList = list_из_конструктора.
2) обработка в активити: в ОнАйтемКлике должны передаваться нужные ИД в параметрах - т.е. проблем не возникнет.

Re: Урок 46. События ExpandableListView

Добавлено: 22 ноя 2016, 09:46
vitek1658
Всем привет!
Я новичок в программировании. У меня проблема: не могу сопоставить конкретный child с картинкой.
Задача: при нажатии на конкретный child брать id картинки из ресурсов и отправить в новое активити.
Пример меню:
public class ListData {
public static HashMap<String, List<String>> loadData() {
HashMap<String, List<String>> expDetails = new HashMap<>();

List<String> kats = new ArrayList<>();
kats.add("Маруся");
kats.add("Валя");
kats.add("Мурка");

List<String> dogs = new ArrayList<>();
dogs.add("Шарик");
dogs.add("ганс");

expDetails.put("Кошки", kats);
expDetails.put("Собаки", dogs);

return expDetails;
}
}

механизм нажатия в основном активити:
expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {

// как правильно сделать конструкцию выбора для каждого child?

}
});

Думал реализовать через swich, но не понял как.
Ресурсы: mar.png; val.png; mur.png; shar.png; gan.png;
Буду рад любой помощи. Спасибо!

Разобрался:

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

@Override
            public boolean onChildClick(ExpandableListView parent, View v,
                                        int groupPosition, int childPosition, long id) {
                Intent i = new Intent(MainActivity.this, FullImageActivity.class);
                
                switch (groupPosition) {
                    case 0: //номер группы по порядку начиная с нуля
                        switch (childPosition) {
                            case 0: //номер подгруппы по порядку начиная с нуля
                                i.putExtra("imageid", (R.drawable.mar));
                                startActivity(i);
                                break;
                            case 1:
                                i.putExtra("imageid", (R.drawable.val));
                                startActivity(i);
                                break;
                            case 2:
                                i.putExtra("imageid", (R.drawable.mur));
                                startActivity(i);
                                break;
                            case 3:
                                i.putExtra("imageid", (R.drawable.shar));
                                startActivity(i);

                            default:
                                break;
                        }
                    default:
                        break;
                }

Re: Урок 46. События ExpandableListView

Добавлено: 29 дек 2016, 14:33
Foxy
Ребят, привет. У меня такая проблема - начиная с последних двух уроков чувствую, что информация идет тяжело, иногда вообще какие-то строки ничерта непонятны.. Скажите, что еще можно и где почитать как дополнение к этим урокам? А то мне кажется, что если я дальше по урокам буду идти вообще понимать перестану.

Re: Урок 46. События ExpandableListView

Добавлено: 29 дек 2016, 16:15
Foxy
А хотя, вроде наоборот :) Прошелся по паре следующих - многое прояснилось, ибо основы те же и они повторяются. :)

Re: Урок 46. События ExpandableListView

Добавлено: 12 апр 2017, 10:19
yarik14532
Такой вопрос на сайте указаны 4 обработчика, два для группы и два для элементов группы. Могу ли я вставить обработчик нажатия по элементу чтобы он создавал еще один элемент в этой группе, и могу ли я использовать обработчик длительного нажатия, и как мне лучше его описать?

Re: Урок 46. События ExpandableListView

Добавлено: 14 июл 2017, 12:50
evgeniy-1c
Доброго всем дня.
Спасибо создателям за проект. Очень помогает при изучении. Но теперь возник вопрос ...
Начиная с прошлого урока я поплыл и не все понимаю. Собственно сейчас вопрос такой:
Было написано: "В проекте, рядом с классом MainActivity создадим (не Activity) класс AdapterHelper" ... где нужно создавать это и что именно выбирать в android studio? Активити? Java Class? Или ещё что-то? Я не вижу такого пункта меню при выборе, как AdapterHelper и где именно "рядом с классом" нужно создавать? Можно как-то принскрин из андроид студио прикрепить, чтобы было понятно куда именно нужно заходить?
Я сделал сам урок, но в нем мне пришлось руками вводить данные в поля Package и Superclass. Я не понимаю, какое значение выбирать вместо Android или Packages, чтобы можно было в поле src добавить Class Java с автозаполненными полями. Долго искал, но ничего не нашел. Или подскажите, пожалуйста, ресурсы, где можно про подобные настройки почитать, чтобы стало понятнее.

Re: Урок 46. События ExpandableListView

Добавлено: 29 авг 2017, 12:44
vitek1658
Доброго дня!
Заполняю список вот такой конструкцией:

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

public class ListData {
    public static HashMap<String, List<String>> loadData() {
        HashMap<String, List<String>> expDetails = new HashMap<>();

        List<String> model1 = new ArrayList<>();
        model1.add("Shine Lite 5080X");
        model1.add("OT-5095K POP 4S");
        model1.add("OT-6070K Idol 4S");
        model1.add("Python");
        model1.add("Scala");

        List<String> model2 = new ArrayList<>();
        model2.add("iPhone 4/4s");
        model2.add("iPhone 5/5s/5SE");
        model2.add("iPhone 5c");
        model2.add("iPhone 6/6s");
        model2.add("iPhone 6+/6s+");
        model2.add("iPhone 7/7s");
        model2.add("iPhone 7+/7s+");

        List<String> model3 = new ArrayList<>();
        model3.add("ZB452KG");
        model3.add("ZB500KL(KG)");
        model3.add("ZB551KL");

        List<String> model4 = new ArrayList<>();
        model4.add("516");
        model4.add("526");
        model4.add("616");
        model4.add("626");
        model4.add("M7");
        model4.add("M8");
        model4.add("M8 mini");

        expDetails.put("Alcatel", model1);
        expDetails.put("Apple", model2);
        expDetails.put("Asus", model3);
        expDetails.put("HTC", model4);

        return expDetails;
    }
Отображение элементов в списке происходит хаотично, как в группе, так и в подгруппе.
Как упорядочить эти элементы по алфавиту. Буду рад готовому коду ))).
Если это сложно, я могу перейти на другой способ заполнения списка. Вот только не нашел список с упорядочиванием.
Спасибо!