Урок 46. События ExpandableListView
Re: Урок 46. События ExpandableListView
Уважаемые форумчане!
Уточню свой предыдущий вопрос.
Не могу реализовать вызов активити в этом месте:
// нажатие на элемент
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 рабочее, а именно из указанного места(по выбору элемента) не дает возможности вызвать!!
Не найду в чем косяк.
Прошу о помощи!!!
Уточню свой предыдущий вопрос.
Не могу реализовать вызов активити в этом месте:
// нажатие на элемент
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
"Не воспринимает строку" ни о чем не говорит. Логи ошибки в студию.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 46. События ExpandableListView
doter.ua писал(а):
"Не воспринимает строку" ни о чем не говорит. Логи ошибки в студию.
Ошибка:
The constructor Intent(new ExpandableListView.OnChildClickListener(){}, Class<Report1>) is undefined
Предлагает убрать ссылку на класс
...
Intent intent = new Intent();
...
но как же тогда???
"Не воспринимает строку" ни о чем не говорит. Логи ошибки в студию.
Ошибка:
The constructor Intent(new ExpandableListView.OnChildClickListener(){}, Class<Report1>) is undefined
Предлагает убрать ссылку на класс
...
Intent intent = new Intent();
...
но как же тогда???
Re: Урок 46. События ExpandableListView
Report1 класс создавал? импортировал?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 46. События ExpandableListView
Класс создан, определен в манифесте! Более того - он работает (без условия)
По условию хочу прописать вызов этого класса, но "не дает прописать"
По условию хочу прописать вызов этого класса, но "не дает прописать"
Re: Урок 46. События ExpandableListView
класс целиком скинь (только используй теги "коде")
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 46. События ExpandableListView
Да , ничего особенного. Простейшая структура на основе урока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
Вот оно!!! Нашел где собака порылась)
Вместо строки :
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, спасибо!
Всем творческих успехов!
Вместо строки :
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
Открою один Java секрет:
[syntax=java]Intent intent = new Intent(MyActivity.this, Report1.class); //MyActivity - исходная активити[/syntax]
[syntax=java]Intent intent = new Intent(MyActivity.this, Report1.class); //MyActivity - исходная активити[/syntax]
Re: Урок 46. События ExpandableListView
Господа!
Добавил файл html - все прекрасно. Но во время его просмотра нет возможности увеличить(приблизить) текст.
Как можно реализовать такую функцию?
Добавил файл html - все прекрасно. Но во время его просмотра нет возможности увеличить(приблизить) текст.
Как можно реализовать такую функцию?
Re: Урок 46. События ExpandableListView
Как реализовать чтоб при нажатии на элемент списка осуществлялся переход на другой Activity?
Re: Урок 46. События ExpandableListView
В кастомном адаптере.ISLI писал(а):Как реализовать чтоб при нажатии на элемент списка осуществлялся переход на другой Activity?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 46. События ExpandableListView
у меня вопрос. Возможно даже глупый.
Как можно привести тип Object к типу Map<? extends ?> ??? Я, может Java плохо изучал, но знаю, что Map<? extends ?> можно привести к Object. А как объяснить обратное?
Код: Выделить всё
String getGroupText(int groupPos) {
return ((Map<String,String>)(adapter.getGroup(groupPos))).get(ATTR_GROUP_NAME);
как я понял, метод getGroup() описан в классе SimpleExpandableListAdapter, и возвращает объект Object. ???В конце класса находятся методы, которые возвращают нам названия групп и элементов из коллекций по номеру группы или номеру элемента. Для этого используем методы адаптера getGroup и getChild, приводим их к Map и извлекаем значение атрибута с именем компании или телефона.
Как можно привести тип Object к типу Map<? extends ?> ??? Я, может Java плохо изучал, но знаю, что Map<? extends ?> можно привести к Object. А как объяснить обратное?
Re: Урок 46. События ExpandableListView
Не знаю что это за способы такие, но коллекция, передаваемая адаптеру, дает ему только ссылку на себя, т.е. можно в активити, зная groupID и childID достать из неё нужный элемент: myMap.get(groupID).get(childID).wamik писал(а):у меня вопрос. Возможно даже глупый.Код: Выделить всё
String getGroupText(int groupPos) { return ((Map<String,String>)(adapter.getGroup(groupPos))).get(ATTR_GROUP_NAME);
как я понял, метод getGroup() описан в классе SimpleExpandableListAdapter, и возвращает объект Object. ???В конце класса находятся методы, которые возвращают нам названия групп и элементов из коллекций по номеру группы или номеру элемента. Для этого используем методы адаптера getGroup и getChild, приводим их к Map и извлекаем значение атрибута с именем компании или телефона.
Как можно привести тип Object к типу Map<? extends ?> ??? Я, может Java плохо изучал, но знаю, что Map<? extends ?> можно привести к Object. А как объяснить обратное?
З.Ы. могут быть несколько вариантов:
1) обработка в адаптере: тогда хранишь в нем ссылку на коллекцию из активити. например this.myList = list_из_конструктора.
2) обработка в активити: в ОнАйтемКлике должны передаваться нужные ИД в параметрах - т.е. проблем не возникнет.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 46. События ExpandableListView
Всем привет!
Я новичок в программировании. У меня проблема: не могу сопоставить конкретный 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;
Буду рад любой помощи. Спасибо!
Разобрался:
Я новичок в программировании. У меня проблема: не могу сопоставить конкретный 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;
}
Последний раз редактировалось vitek1658 29 авг 2017, 12:35, всего редактировалось 1 раз.
Re: Урок 46. События ExpandableListView
Ребят, привет. У меня такая проблема - начиная с последних двух уроков чувствую, что информация идет тяжело, иногда вообще какие-то строки ничерта непонятны.. Скажите, что еще можно и где почитать как дополнение к этим урокам? А то мне кажется, что если я дальше по урокам буду идти вообще понимать перестану.
Re: Урок 46. События ExpandableListView
А хотя, вроде наоборот Прошелся по паре следующих - многое прояснилось, ибо основы те же и они повторяются.
-
- Сообщения: 1
- Зарегистрирован: 12 апр 2017, 10:12
Re: Урок 46. События ExpandableListView
Такой вопрос на сайте указаны 4 обработчика, два для группы и два для элементов группы. Могу ли я вставить обработчик нажатия по элементу чтобы он создавал еще один элемент в этой группе, и могу ли я использовать обработчик длительного нажатия, и как мне лучше его описать?
-
- Сообщения: 4
- Зарегистрирован: 14 июл 2017, 12:42
Re: Урок 46. События ExpandableListView
Доброго всем дня.
Спасибо создателям за проект. Очень помогает при изучении. Но теперь возник вопрос ...
Начиная с прошлого урока я поплыл и не все понимаю. Собственно сейчас вопрос такой:
Было написано: "В проекте, рядом с классом MainActivity создадим (не Activity) класс AdapterHelper" ... где нужно создавать это и что именно выбирать в android studio? Активити? Java Class? Или ещё что-то? Я не вижу такого пункта меню при выборе, как AdapterHelper и где именно "рядом с классом" нужно создавать? Можно как-то принскрин из андроид студио прикрепить, чтобы было понятно куда именно нужно заходить?
Я сделал сам урок, но в нем мне пришлось руками вводить данные в поля Package и Superclass. Я не понимаю, какое значение выбирать вместо Android или Packages, чтобы можно было в поле src добавить Class Java с автозаполненными полями. Долго искал, но ничего не нашел. Или подскажите, пожалуйста, ресурсы, где можно про подобные настройки почитать, чтобы стало понятнее.
Спасибо создателям за проект. Очень помогает при изучении. Но теперь возник вопрос ...
Начиная с прошлого урока я поплыл и не все понимаю. Собственно сейчас вопрос такой:
Было написано: "В проекте, рядом с классом MainActivity создадим (не Activity) класс AdapterHelper" ... где нужно создавать это и что именно выбирать в android studio? Активити? Java Class? Или ещё что-то? Я не вижу такого пункта меню при выборе, как AdapterHelper и где именно "рядом с классом" нужно создавать? Можно как-то принскрин из андроид студио прикрепить, чтобы было понятно куда именно нужно заходить?
Я сделал сам урок, но в нем мне пришлось руками вводить данные в поля Package и Superclass. Я не понимаю, какое значение выбирать вместо Android или Packages, чтобы можно было в поле src добавить Class Java с автозаполненными полями. Долго искал, но ничего не нашел. Или подскажите, пожалуйста, ресурсы, где можно про подобные настройки почитать, чтобы стало понятнее.
Re: Урок 46. События ExpandableListView
Доброго дня!
Заполняю список вот такой конструкцией:
Отображение элементов в списке происходит хаотично, как в группе, так и в подгруппе.
Как упорядочить эти элементы по алфавиту. Буду рад готовому коду ))).
Если это сложно, я могу перейти на другой способ заполнения списка. Вот только не нашел список с упорядочиванием.
Спасибо!
Заполняю список вот такой конструкцией:
Код: Выделить всё
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;
}
Как упорядочить эти элементы по алфавиту. Буду рад готовому коду ))).
Если это сложно, я могу перейти на другой способ заполнения списка. Вот только не нашел список с упорядочиванием.
Спасибо!