Урок 46. События ExpandableListView
Re: Урок 46. События ExpandableListView
Добрый день. Буду очень признателен за помощь. При нажатии на произвольно выбранный айтем в ExpandableListView нужно чтобы запускался активити с WebView, которая должна открывать html страницу из папки assets. Как это реализовать? - если можно подробно с кодом, у меня еще нет достаточного опыта. Никак не могу связать код из урока 32 и 46. Заранее спасибо.
Re: Урок 46. События ExpandableListView
Друзья. Нужна ваша помощь. Не могу понять как реализовать добавление в подсписок элементов при нажатии на заголовок группы.
Помогите плиз
Помогите плиз
-
- Сообщения: 1
- Зарегистрирован: 02 июн 2014, 07:30
Re: Урок 46. События ExpandableListView
ExpandableListView.OnChildClickListener не работает
Здравствуйте. Я написал проект по туториалу андроида http://www.vogella.com/tutorials/Androi ... ew_example И у меня получилось и меню и подменюшки. Далее я попробовал сделать так, чтобы при нажатии на подменюшку открывался html файл, но здесь застрял - ExpandableListView.OnChildClickListener не работает. Поискал в гугле советы - не помогло. Можете пожалуйста посмотреть проект? вот он http://dropmefiles.com/EQdZY
Что неправильно?
Здравствуйте. Я написал проект по туториалу андроида http://www.vogella.com/tutorials/Androi ... ew_example И у меня получилось и меню и подменюшки. Далее я попробовал сделать так, чтобы при нажатии на подменюшку открывался html файл, но здесь застрял - ExpandableListView.OnChildClickListener не работает. Поискал в гугле советы - не помогло. Можете пожалуйста посмотреть проект? вот он http://dropmefiles.com/EQdZY
Что неправильно?
-
- Сообщения: 1
- Зарегистрирован: 13 июн 2014, 15:59
Re: Урок 46. События ExpandableListView
В 46 уроке в конце методе onCreate есть строка: elvMain.expandGroup(2); При первом запуске обрабатывается метод onCreate и разворачивается список под номером 2. Почему после поворота экрана - метод onCreate снова обрабатывается, проходит через строку elvMain.expandGroup(2); - но на этот раз список под номером 2 не открывается?
-
- Сообщения: 4
- Зарегистрирован: 18 июн 2014, 11:29
Re: Урок 46. События ExpandableListView
Ребята, родненькие, помогите пожалуйста, уже облазил весь форум и интернет! Я полный чайник, но очень желаю научиться программировать.Создал боковое меню с помощью ExpandableListView но не знаю как вызвать новый activity с элемента.
[syntax=javascript]
elvMain.setOnChildClickListener(new OnChildClickListener() {
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Как обработать событие??????????????
return false;
}
}); [/syntax]
[syntax=javascript]
elvMain.setOnChildClickListener(new OnChildClickListener() {
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Как обработать событие??????????????
return false;
}
}); [/syntax]
Re: Урок 46. События ExpandableListView
с помощью intent, как обычно. Есть же урок.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 4
- Зарегистрирован: 18 июн 2014, 11:29
Re: Урок 46. События ExpandableListView
Добрый ты человек Foenix, спасибо, буду тренироваться. Как хорошо, что есть люди которые создают подобные форумы и сайты.
Re: Урок 46. События ExpandableListView
Подскажите пожалуйста, как реализовать обновление списка одной группы при нажатии на группу? Точнее при действии onGroupExpand. Вношу изменения путем замены строк, которые добавляются в коллекцию childData, согласно уроку и вызываю notifyDataSetChanged() для адаптера, но ничего не происходит до пересоздания окна. СПАСИБО Залил свой вопрос на StackOverFlow также: http://stackoverflow.com/questions/2451 ... -the-group Выручайте, ребята!!!!!!
Последний раз редактировалось Spinner 01 июл 2014, 22:15, всего редактировалось 6 раз.
Re: Урок 46. События ExpandableListView
Как реализовать длинный клик на Child элементе ExpandableListView?
На группе стандартно.
Регистрируем контекстное меню для элемента
на группе работает. Все ОК. Но если я пробую тоже меню вызвать на Child-элементе вываливатеся ошибка
В инете нашел решение
http://stackoverflow.com/questions/2834 ... nu#2834892
но...
требует реализовать метод getExpandableListView()
Т.е. получается для ExpandableListView нужно 2 раза регистрировать контекстное меню. Для группы и чаилдов
Вопрос снят. сам начудил. в Лонгклике хотел определить название нажатого эл-та
А в случае с чаилдом, arg1 ловился как LinearLayout, о чем и сообщала эклипса перед тем как вывалится в ошибку
На группе стандартно.
Регистрируем контекстное меню для элемента
Код: Выделить всё
registerForContextMenu(elvMain);
Код: Выделить всё
07-01 08:23:28.051: W/dalvikvm(382): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
07-01 08:23:28.072: E/AndroidRuntime(382): FATAL EXCEPTION: main
07-01 08:23:28.072: E/AndroidRuntime(382): java.lang.ClassCastException: android.widget.LinearLayout
07-01 08:23:28.072: E/AndroidRuntime(382): at ru.mail.Energo_map.Energo_mapActivity$2.onItemLongClick(Energo_mapActivity.java:188)
07-01 08:23:28.072: E/AndroidRuntime(382): at android.widget.AbsListView.performLongPress(AbsListView.java:1753)
07-01 08:23:28.072: E/AndroidRuntime(382): at android.widget.AbsListView.access$600(AbsListView.java:72)
07-01 08:23:28.072: E/AndroidRuntime(382): at android.widget.AbsListView$CheckForLongPress.run(AbsListView.java:1711)
07-01 08:23:28.072: E/AndroidRuntime(382): at android.os.Handler.handleCallback(Handler.java:587)
07-01 08:23:28.072: E/AndroidRuntime(382): at android.os.Handler.dispatchMessage(Handler.java:92)
07-01 08:23:28.072: E/AndroidRuntime(382): at android.os.Looper.loop(Looper.java:123)
07-01 08:23:28.072: E/AndroidRuntime(382): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-01 08:23:28.072: E/AndroidRuntime(382): at java.lang.reflect.Method.invokeNative(Native Method)
07-01 08:23:28.072: E/AndroidRuntime(382): at java.lang.reflect.Method.invoke(Method.java:521)
07-01 08:23:28.072: E/AndroidRuntime(382): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-01 08:23:28.072: E/AndroidRuntime(382): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-01 08:23:28.072: E/AndroidRuntime(382): at dalvik.system.NativeStart.main(Native Method)
http://stackoverflow.com/questions/2834 ... nu#2834892
но...
Код: Выделить всё
registerForContextMenu(getExpandableListView());
Т.е. получается для ExpandableListView нужно 2 раза регистрировать контекстное меню. Для группы и чаилдов
Вопрос снят. сам начудил. в Лонгклике хотел определить название нажатого эл-та
Код: Выделить всё
//TextView textView = (TextView) arg1;
//Element_name = textView.getText().toString();
Re: Урок 46. События ExpandableListView
Добрый день.
Делаю ListView - трехуровневый.
Adapter_tovar.java
Object_gr.java
Tovar_gr.java
Все отображается как надо.
Возникла проблема с обработкой события "onChildClick" - не реагирует.
Проверял "onGroupClick" - работает как нужно.
Подскажите как мне обработать событие "onChildClick" .
Делаю ListView - трехуровневый.
Adapter_tovar.java
Код: Выделить всё
package com.example.threelevelexpandablelistview;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
public class Adapter_tovar extends BaseExpandableListAdapter {
private List<Object_gr> objects;
private Activity activity;
private LayoutInflater inflater;
public Adapter_tovar(Activity activity, List<Object_gr> objects) {
this.objects= objects;
this.activity= activity;
this.inflater= (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public Object_gr getChild(int groupPosition, int childPosition) {
return objects.get(groupPosition).getObjects().get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
Object_gr object= (Object_gr) getChild(groupPosition, childPosition);
CustomExpandableListView subObjects= (CustomExpandableListView) convertView;;
if (convertView==null) {
subObjects= new CustomExpandableListView(activity);
}
Adapter2 adapter= new Adapter2(activity, object);
subObjects.setAdapter(adapter);
return subObjects;
}
@Override
public int getChildrenCount(int groupPosition) {
return objects.get(groupPosition).getObjects().size();
}
@Override
public Object_gr getGroup(int groupPosition) {
return objects.get(groupPosition);
}
@Override
public int getGroupCount() {
return objects.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
Object_gr object= (Object_gr) getGroup(groupPosition);
if (convertView==null) {
convertView= inflater.inflate(R.layout.listview_element, null);
}
TextView name= (TextView) convertView.findViewById(R.id.name);
name.setText(object.getName());
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
class Adapter2 extends BaseExpandableListAdapter {
private Object_gr object;
private LayoutInflater inflater;
private Activity activity;
final String LOG_TAG = "myLogs";
public Adapter2(Activity activity, Object_gr object) {
this.activity= activity;
this.object= object;
this.inflater= (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public Object_gr getChild(int groupPosition, int childPosition) {
return object.getObjects().get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
Object_gr object= (Object_gr) getChild(0, childPosition);
if (convertView==null) {
convertView= inflater.inflate(R.layout.listview_element, null);
Resources r = activity.getResources();
float px40 = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 0, r.getDisplayMetrics());
convertView.setPadding(
convertView.getPaddingLeft() + (int) px40,
convertView.getPaddingTop(),
convertView.getPaddingRight(),
convertView.getPaddingBottom());
}
TextView name= (TextView) convertView.findViewById(R.id.name);
name.setText(object.getName());
TextView kod= (TextView) convertView.findViewById(R.id.kod);
kod.setText(object.getKod());
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return object.getObjects().size();
}
@Override
public Object_gr getGroup(int groupPosition) {
return object;
}
@Override
public int getGroupCount() {
return 1;
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
if (convertView==null) {
convertView= inflater.inflate(R.layout.listview_element, null);
Resources r = activity.getResources();
float px20 = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, r.getDisplayMetrics());
convertView.setPadding(
convertView.getPaddingLeft() + (int) px20,
convertView.getPaddingTop(),
convertView.getPaddingRight(),
convertView.getPaddingBottom());
}
TextView name= (TextView) convertView.findViewById(R.id.name);
name.setText(object.getName());
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
Object_gr.java
Код: Выделить всё
package com.example.threelevelexpandablelistview;
import java.util.List;
public class Object_gr {
String name;
String kod;
List<Object_gr> objects;
public Object_gr(String name, List<Object_gr> objects, String kod) {
this.name= name;
this.kod= kod;
this.objects= objects;
}
public String getName() {
return this.name;
}
public String getKod() {
return this.kod;
}
public List<Object_gr> getObjects() {
return this.objects;
}
}
Tovar_gr.java
Код: Выделить всё
package com.example.threelevelexpandablelistview;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.RelativeLayout;
public class Tovar_gr extends Activity {
public static CustomExpandableListView list;
final String LOG_TAG = "myLogs";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int noObjectsLevel1= 5;
int noObjectsLevel2= 4;
int noObjectsLevel3= 7;
List<Object_gr> objectsLvl1= new ArrayList<Object_gr>();
for (int i=0; i<noObjectsLevel1; i++) {
List<Object_gr> objectsLvl2= new ArrayList<Object_gr>();
for (int j=0; j<noObjectsLevel2; j++) {
List<Object_gr> objectsLvl3= new ArrayList<Object_gr>();
for (int k=0; k<noObjectsLevel3; k++) {
objectsLvl3.add(new Object_gr("lvl3_"+String.valueOf(k), null,"--1--"));
}
objectsLvl2.add(new Object_gr("lvl2_"+String.valueOf(j), objectsLvl3,"--2--"));
}
objectsLvl1.add(new Object_gr("lvl1_"+String.valueOf(i), objectsLvl2,"--3--"));
}
RelativeLayout parent= (RelativeLayout) findViewById(R.id.parent);
list= new CustomExpandableListView(this);
Adapter_tovar adapter= new Adapter_tovar(this, objectsLvl1);
list.setAdapter(adapter);
// элемент нажатие
list.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Log.d(LOG_TAG, "groupPosition = " + groupPosition +
" childPosition = " + v + " id = " + id);
return false;
}
});
parent.addView(list);
}
}
class CustomExpandableListView extends ExpandableListView {
public CustomExpandableListView(Context context) {
super(context);
}
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
/*
* Adjust height
*/
heightMeasureSpec = MeasureSpec.makeMeasureSpec(500, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
Возникла проблема с обработкой события "onChildClick" - не реагирует.
Проверял "onGroupClick" - работает как нужно.
Подскажите как мне обработать событие "onChildClick" .
Re: Урок 46. События ExpandableListView
Ну очень нужна помощь!
Re: Урок 46. События ExpandableListView
попробуйте в xml файле к ExpandableListView добавитьsae74 писал(а):Ну очень нужна помощь!
[syntax=xml]android:descendantFocusability="blocksDescendants"[/syntax]
Re: Урок 46. События ExpandableListView
Попробовал - не реагирует.altwin писал(а): попробуйте в xml файле к ExpandableListView добавить
[syntax=xml]android:descendantFocusability="blocksDescendants"[/syntax]
Прикрепил файл проекта.
Может так будет проще подсказать в чем моя ошибка.
- Вложения
-
- MainActivity.rar
- (925.56 КБ) 269 скачиваний
Re: Урок 46. События ExpandableListView
В этом проекте onChildClick не реализован вообще и соответственно не работает.sae74 писал(а):Попробовал - не реагирует.altwin писал(а): попробуйте в xml файле к ExpandableListView добавить
[syntax=xml]android:descendantFocusability="blocksDescendants"[/syntax]
Прикрепил файл проекта.
Может так будет проще подсказать в чем моя ошибка.
Re: Урок 46. События ExpandableListView
Как его реализовать?
Re: Урок 46. События ExpandableListView
так же как в вопросе - достаточно. Можете switch по childPosition добавить -не особо важно, если isChildSelectable в true установлен на момент вызова, то конфликт может быть только в обработке клика из за конфликта с onClick который вызывается раньше, т.е. нужно для него кликабельность убить. Других проблем быть не должно.sae74 писал(а):Как его реализовать?
Re: Урок 46. События ExpandableListView
Если вы мне хотя бы покажите как это сделать - буду вам признателен ОЧЕНЬ ДОЛГО!altwin писал(а):так же как в вопросе - достаточно. Можете switch по childPosition добавить -не особо важно, если isChildSelectable в true установлен на момент вызова, то конфликт может быть только в обработке клика из за конфликта с onClick который вызывается раньше, т.е. нужно для него кликабельность убить. Других проблем быть не должно.sae74 писал(а):Как его реализовать?
Re: Урок 46. События ExpandableListView
Как угодно, например:
[syntax=java5]@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
// Create a switch that switches on the specific child position.
switch(childPosition) {
case 0:
// Go to child #0 specific class.
Intent child0Intent = new Intent(this, Child0Activity.class);
startActivity(child0Intent);
break;
case 1:
// Go to child #1 specific class.
Intent child1Intent = new Intent(this, Child1Activity.class);
startActivity(child1Intent);
break;
}
return false;
}[/syntax]
рабочий пример списка: http://www.mysamplecode.com/2012/10/and ... ample.html
[syntax=java5]@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
// Create a switch that switches on the specific child position.
switch(childPosition) {
case 0:
// Go to child #0 specific class.
Intent child0Intent = new Intent(this, Child0Activity.class);
startActivity(child0Intent);
break;
case 1:
// Go to child #1 specific class.
Intent child1Intent = new Intent(this, Child1Activity.class);
startActivity(child1Intent);
break;
}
return false;
}[/syntax]
рабочий пример списка: http://www.mysamplecode.com/2012/10/and ... ample.html
Re: Урок 46. События ExpandableListView
Я наверное не чего не понимаю.....
Что не пробую - могу получить событие только по первому уровню.
По второму и по третьему - не сего не выходит.
В двухмерном списке все работает, в трехмерном - нет.
Что не пробую - могу получить событие только по первому уровню.
По второму и по третьему - не сего не выходит.
В двухмерном списке все работает, в трехмерном - нет.
Re: Урок 46. События ExpandableListView
Господа!!!!
Подскажите как по выбору элемента перейти в новый активити? Имеется ввиду что не просто выводить данные в текст вью, а создать новое окно. Intent (как в уроке 21) при выборе элемента, не воспринимается.
Подскажите как по выбору элемента перейти в новый активити? Имеется ввиду что не просто выводить данные в текст вью, а создать новое окно. Intent (как в уроке 21) при выборе элемента, не воспринимается.