Страница 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;
}
Отображение элементов в списке происходит хаотично, как в группе, так и в подгруппе.
Как упорядочить эти элементы по алфавиту. Буду рад готовому коду ))).
Если это сложно, я могу перейти на другой способ заполнения списка. Вот только не нашел список с упорядочиванием.
Спасибо!