Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 18 июн 2018, 10:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 11 окт 2013, 01:04 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
попробуй почитать еще раз 45й урок, и там в конце написано, как "усложнить" это дело еще парочкой текствью. Вместо доп. текствью можно и картинку запихнуть, любую вьюшку.

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 12 окт 2013, 16:52 

Зарегистрирован: 10 окт 2013, 15:55
Сообщений: 7
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Только не совсем понял как для каждого child сделать свой layout?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 12 окт 2013, 17:31 

Зарегистрирован: 12 окт 2013, 17:28
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
а как сделать так что бы по нажатию на Optimus вылезла краткая информация о нём ?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 12 окт 2013, 20:40 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
Mamapapa писал(а):
Только не совсем понял как для каждого child сделать свой layout?

почитай уроки про listview, это поможет тебе понять.

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 15 окт 2013, 17:31 

Зарегистрирован: 30 сен 2013, 12:08
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Подскажите пожалуйста, как в исходном коде данного урока реализовать обработчик длинного нажатия на дочерний айтем списка,
чтобы можно було получить его значение и id?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 15 окт 2013, 18:13 
Аватар пользователя

Зарегистрирован: 28 сен 2013, 17:34
Сообщений: 450
Благодарил (а): 8 раз.
Поблагодарили: 110 раз.
Примерно так:
Код: [ Загрузить ] [ Скрыть ]
  1. elvMain.setOnItemLongClickListener(new OnItemLongClickListener() { 
  2.             public boolean onItemLongClick(AdapterView<?> adapter, View v, int position, long id) { 
  3.                 Log.d(LOG_TAG, "onItemLongClick  position = " + position);                                     
  4.                 return false; 
  5.             } 
  6.         }); 

Правда мне не понятна строка (мало опыта)
AdapterView<?> adapter
будет работать или туда нужно свой адаптер подставлять?

Можешь ещё эту ссылку посмотреть
http://stackoverflow.com/questions/15862431/how-to-enable-longclicks-on-my-listview

_________________
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 16 окт 2013, 09:29 

Зарегистрирован: 30 сен 2013, 12:08
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Я так пробовал. отрабатывает, но удается получить только номер позиции в листе,
а вот id елемента как в коротком клике получить не получается.
Пробовал adapter.getItemAtPosition(position).toString() насколько я понял, должен вернуть значение айтема,
но вместо значения возвращается чтото типа android.database.sqlite.SQLiteCursor@4052c138
position в даном случае вернул 2
v.getId() вернуло -1 (причем на всех елементах списка = -1)

Скорее всего я чето недопонимаю, опыта тоже маловато.
Может ктото прояснит ситуацию


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 02 ноя 2013, 21:48 

Зарегистрирован: 02 ноя 2013, 21:32
Сообщений: 3
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
В событие setOnGroupClickListener вставил такой код:


Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.    elvMain.setOnGroupClickListener(new OnGroupClickListener() {
  2.             public boolean onGroupClick(ExpandableListView parent, View v,
  3.                                         int groupPosition, long id) {
  4.                  switch (groupPosition){
  5.  
  6.                      case 0:
  7.                              elvMain.collapseGroup(1);
  8.                              elvMain.collapseGroup(2);
  9.                          break;
  10.                      case 1:
  11.                              elvMain.collapseGroup(0);
  12.                              elvMain.collapseGroup(2);
  13.                          break;
  14.                      case 2:
  15.                              elvMain.collapseGroup(1);
  16.                              elvMain.collapseGroup(0);
  17.                          break;
  18.                  }
  19.  
  20.                 return false;
  21.             }
  22.         });


Ну что-бы когда выбираешь группу - остальные группы сворачивались и не занимали место.
Работает - только если перебирать с низу вверх, а если нажать сначала например группу 1 а потом 2, то приложение вылетает.
Что я сделал не так?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 02 ноя 2013, 22:25 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
ну что значит вылетает? надо лог смотреть!

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 03 ноя 2013, 00:03 
Аватар пользователя

Зарегистрирован: 28 сен 2013, 17:34
Сообщений: 450
Благодарил (а): 8 раз.
Поблагодарили: 110 раз.
[quote="gerichsergey"][/quote]
разворачивание группы
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.                 elvMain.setOnGroupExpandListener(new OnGroupExpandListener() {
  2.                         public void onGroupExpand(int groupPosition) {
  3.                                 Log.d(TAG, "onGroupExpand groupPosition = " + groupPosition);
  4.                                 //tvInfo.setText("Равзвернули " + ah.getGroupText(groupPosition));
  5.                                                                                          
  6.                 switch (groupPosition){
  7.                                  
  8.                 case 0:
  9.                         elvMain.collapseGroup(1);
  10.                         elvMain.collapseGroup(2);
  11.                     break;
  12.                 case 1:
  13.                         elvMain.collapseGroup(0);
  14.                         elvMain.collapseGroup(2);
  15.                     break;
  16.                 case 2:
  17.                         elvMain.collapseGroup(1);
  18.                         elvMain.collapseGroup(0);
  19.                     break;
  20.             }
  21.  

А можно ещё короче,
объявляем переменную вначале класса
int prevPosition = -1;

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. // разворачивание группы
  2. elvMain.setOnGroupExpandListener
  3.  
  4.  if(prevPosition !=-1 && groupPosition != prevPosition){                                       
  5.  elvMain.collapseGroup(prevPosition);                                  
  6.  }                                             
  7. prevPosition = groupPosition;

_________________
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 03 ноя 2013, 08:42 

Зарегистрирован: 02 ноя 2013, 21:32
Сообщений: 3
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
trew
Спасибо так работает!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 17 ноя 2013, 13:52 
Аватар пользователя

Зарегистрирован: 28 сен 2013, 17:34
Сообщений: 450
Благодарил (а): 8 раз.
Поблагодарили: 110 раз.
Как в ExpandableListView
после того, как пользователь раскрыл очень длинную подгруппу, показать начало подгруппы?
(сейчас пользователь видит самый низ подгруппы, после раскрытия списка)

После такого кода:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. elvMain.setOnScrollListener(new OnScrollListener() {
  2.                         public void onScroll(AbsListView view, int first, int visible, int total) {
  3.                                
  4.                                 elvMain.setSelectionAfterHeaderView();
  5.                                 /*     
  6.                                                
  7.                                 Log.d(TAG, "first= " + first +", visible= " + visible + ",total= " + total);                           
  8.                                 */
  9.                         }
  10.  
  11.                         public void onScrollStateChanged(AbsListView view, int scrollState) {}
  12.                     });

прокрутка подгруппы не работает. Показывает всегда начало.
Условие IF что-то не могу придумать, может кто поможет.

Или может можно как-то иначе, куда вставить строку
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. elvMain.setSelectionAfterHeaderView();

(кажется, уже все события перебрал, не нашел рабочий вариант)
?

elvMain.setTranscriptMode(0); -- не помогает решить проблему.

_________________
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 17 ноя 2013, 23:30 
Аватар пользователя

Зарегистрирован: 27 сен 2013, 23:28
Сообщений: 41
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Можете мне изменить код так что бы при нажатий на child переходил на Activity находил в инете много но из за них появлялись ошибки


Код MainActivity.java:
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. package com.android.mcskill.ru;
  2.  
  3. import java.util.ArrayList;
  4. import android.os.Bundle;
  5. import android.app.ExpandableListActivity;
  6. import android.content.Context;
  7. import android.view.LayoutInflater;
  8. import android.widget.ExpandableListView;
  9.  
  10. public class MainActivity extends ExpandableListActivity
  11. {
  12.     // Create ArrayList to hold parent Items and Child Items
  13.     private ArrayList<String> parentItems = new ArrayList<String>();
  14.     private ArrayList<Object> childItems = new ArrayList<Object>();
  15.  
  16.     @Override
  17.     public void onCreate(Bundle savedInstanceState)
  18.     {
  19.  
  20.         super.onCreate(savedInstanceState);
  21.  
  22.        
  23.         // Create Expandable List and set it's properties
  24.         ExpandableListView expandableList = getExpandableListView();
  25.         expandableList.setDividerHeight(2);
  26.         expandableList.setGroupIndicator(null);
  27.         expandableList.setClickable(true);
  28.  
  29.         // Set the Items of Parent
  30.         setGroupParents();
  31.         // Set The Child Data
  32.         setChildData();
  33.  
  34.         // Create the Adapter
  35.         MyExpandableAdapter adapter = new MyExpandableAdapter(parentItems, childItems);
  36.  
  37.         adapter.setInflater((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE), this);
  38.        
  39.         // Set the Adapter to expandableList
  40.         expandableList.setAdapter(adapter);
  41.         expandableList.setOnChildClickListener(this);
  42.     }
  43.  
  44.     // method to add parent Items
  45.     public void setGroupParents()
  46.     {
  47.         parentItems.add("О сервере");
  48.         parentItems.add("Как начать ?");
  49.         parentItems.add("Новости");
  50.         parentItems.add("Помощь новичкам");
  51.     }
  52.  
  53.     // method to set child data of each parent
  54.     public void setChildData()
  55.     {
  56.  
  57.         // Add Child Items for Fruits
  58.         ArrayList<String> child = new ArrayList<String>();
  59.         child.add("История");
  60.         child.add("Первые сервера");
  61.         child.add("Описание серверов");
  62.        
  63.         childItems.add(child);
  64.  
  65.         // Add Child Items for Flowers
  66.         child = new ArrayList<String>();
  67.         child.add("Регистрация на сайте");
  68.         child.add("Скачивние лаунчера");
  69.         child.add("Вопросы по поводу лаунчера");
  70.         child.add("Игра");
  71.        
  72.         childItems.add(child);
  73.  
  74.         // Add Child Items for Animals
  75.         child = new ArrayList<String>();
  76.         child.add("Новости");
  77.         child.add("Баги, запрещенные предметы");
  78.         child.add("Администрация");
  79.         child.add("Правила");
  80.        
  81.         childItems.add(child);
  82.  
  83.         // Add Child Items for Birds
  84.         child = new ArrayList<String>();
  85.         child.add("Гайд Industral");
  86.         child.add("Гайд MagicRPG");
  87.         child.add("Гайд GunCraft");
  88.        
  89.         childItems.add(child);
  90.     }
  91.  
  92. }
  93.  



Код MyExpandableAdapter.java(Adapter кароч) :
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. package com.android.mcskill.ru;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. import android.app.Activity;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.view.ViewGroup;
  10. import android.widget.BaseExpandableListAdapter;
  11. import android.widget.CheckedTextView;
  12. import android.widget.TextView;
  13. import android.widget.Toast;
  14.  
  15. public class MyExpandableAdapter extends BaseExpandableListAdapter
  16. {
  17.  
  18.     private Activity activity;
  19.     private ArrayList<Object> childtems;
  20.     private LayoutInflater inflater;
  21.     private ArrayList<String> parentItems, child;
  22.  
  23.     // constructor
  24.     public MyExpandableAdapter(ArrayList<String> parents, ArrayList<Object> childern)
  25.     {
  26.         this.parentItems = parents;
  27.         this.childtems = childern;
  28.     }
  29.  
  30.     public void setInflater(LayoutInflater inflater, Activity activity)
  31.     {
  32.         this.inflater = inflater;
  33.         this.activity = activity;
  34.     }
  35.    
  36.     // method getChildView is called automatically for each child view.
  37.     //  Implement this method as per your requirement
  38.     @SuppressWarnings("unchecked")
  39.         @Override
  40.     public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
  41.     {
  42.  
  43.         child = (ArrayList<String>) childtems.get(groupPosition);
  44.  
  45.         TextView textView = null;
  46.  
  47.         if (convertView == null) {
  48.             convertView = inflater.inflate(R.layout.child_view, null);
  49.         }
  50.    
  51.          // get the textView reference and set the value
  52.         textView = (TextView) convertView.findViewById(R.id.textViewChild);
  53.         textView.setText(child.get(childPosition));
  54.  
  55.         // set the ClickListener to handle the click event on child item
  56.         convertView.setOnClickListener(new OnClickListener() {
  57.  
  58.             @Override
  59.             public void onClick(View view) {
  60.                 Toast.makeText(activity, child.get(childPosition),
  61.                         Toast.LENGTH_SHORT).show();
  62.             }
  63.         });
  64.         return convertView;
  65.     }
  66.  
  67.     // method getGroupView is called automatically for each parent item
  68.     // Implement this method as per your requirement
  69.     @Override
  70.     public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)
  71.     {
  72.  
  73.         if (convertView == null) {
  74.             convertView = inflater.inflate(R.layout.activity_main, null);
  75.         }
  76.  
  77.         ((CheckedTextView) convertView).setText(parentItems.get(groupPosition));
  78.         ((CheckedTextView) convertView).setChecked(isExpanded);
  79.  
  80.         return convertView;
  81.     }
  82.  
  83.     @Override
  84.     public Object getChild(int groupPosition, int childPosition)
  85.     {
  86.         return null;
  87.     }
  88.  
  89.     @Override
  90.     public long getChildId(int groupPosition, int childPosition)
  91.     {
  92.         return 0;
  93.     }
  94.  
  95.     @SuppressWarnings("unchecked")
  96.         @Override
  97.     public int getChildrenCount(int groupPosition)
  98.     {
  99.         return ((ArrayList<String>) childtems.get(groupPosition)).size();
  100.     }
  101.  
  102.     @Override
  103.     public Object getGroup(int groupPosition)
  104.     {
  105.         return null;
  106.     }
  107.  
  108.     @Override
  109.     public int getGroupCount()
  110.     {
  111.         return parentItems.size();
  112.     }
  113.  
  114.     @Override
  115.     public void onGroupCollapsed(int groupPosition)
  116.     {
  117.         super.onGroupCollapsed(groupPosition);
  118.     }
  119.  
  120.     @Override
  121.     public void onGroupExpanded(int groupPosition)
  122.     {
  123.         super.onGroupExpanded(groupPosition);
  124.     }
  125.  
  126.     @Override
  127.     public long getGroupId(int groupPosition)
  128.     {
  129.         return 0;
  130.     }
  131.  
  132.     @Override
  133.     public boolean hasStableIds()
  134.     {
  135.         return false;
  136.     }
  137.  
  138.     @Override
  139.     public boolean isChildSelectable(int groupPosition, int childPosition)
  140.     {
  141.         return false;
  142.     }
  143. }
  144.  


activity_main.xml :
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. <CheckedTextView
  2.        xmlns:android="http://schemas.android.com/apk/res/android"
  3.        xmlns:tools="http://schemas.android.com/tools"
  4.        android:id="@+id/textViewGroupName"
  5.        android:layout_width="wrap_content"
  6.        android:layout_height="60dp"
  7.        android:layout_marginLeft="5dp"
  8.        android:gravity="center_vertical"
  9.        android:text="@string/hello_world"
  10.        android:textSize="18sp"
  11.        android:textColor="#FFFFFF"
  12.        android:padding="10dp"
  13.        android:textSelectHandleLeft="@string/hello_world"
  14.        android:background="#009999"
  15.        android:textStyle="bold" />
  16.  


Код chil_view.xml:
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.    xmlns:tools="http://schemas.android.com/tools"
  3.    android:layout_width="match_parent"
  4.    android:layout_height="40dp"
  5.    android:background="#99D6D6"
  6.    android:clickable="true"
  7.    android:orientation="vertical"
  8.    android:paddingLeft="40dp"
  9.    tools:context=".MainActivity" >
  10.  
  11.     <LinearLayout
  12.        android:layout_width="match_parent"
  13.        android:layout_height="39dp"
  14.        android:gravity="center_vertical" >
  15.  
  16.         <ImageView
  17.            android:id="@+id/childImage"
  18.            android:layout_width="30dp"
  19.            android:layout_height="30dp"
  20.            android:layout_margin="5dp"
  21.            android:background="@drawable/ghz"
  22.            android:contentDescription="@string/hello_world" />
  23.  
  24.         <TextView
  25.            android:id="@+id/textViewChild"
  26.            android:layout_width="wrap_content"
  27.            android:layout_height="wrap_content"
  28.            android:layout_marginLeft="5dp"
  29.            android:text="@string/hello_world"
  30.            android:textSize="16sp"
  31.            android:textColor="#1919A3"
  32.            android:textStyle="bold" />
  33.     </LinearLayout>
  34.  
  35.     <View
  36.        android:layout_width="match_parent"
  37.        android:layout_height="1dp"
  38.        android:background="@android:color/white" />
  39.  
  40. </LinearLayout>




ЗАРАНЕЕ СПАСИБО !

_________________
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 18 ноя 2013, 09:22 
Аватар пользователя

Зарегистрирован: 27 сен 2013, 23:28
Сообщений: 41
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Можете мне изменить код так что бы при нажатий на child переходил на Activity находил в инете много но из за них появлялись ошибки


Код MainActivity.java:
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. package com.android.mcskill.ru;
  2.  
  3. import java.util.ArrayList;
  4. import android.os.Bundle;
  5. import android.app.ExpandableListActivity;
  6. import android.content.Context;
  7. import android.view.LayoutInflater;
  8. import android.widget.ExpandableListView;
  9.  
  10. public class MainActivity extends ExpandableListActivity
  11. {
  12.     // Create ArrayList to hold parent Items and Child Items
  13.     private ArrayList<String> parentItems = new ArrayList<String>();
  14.     private ArrayList<Object> childItems = new ArrayList<Object>();
  15.  
  16.     @Override
  17.     public void onCreate(Bundle savedInstanceState)
  18.     {
  19.  
  20.         super.onCreate(savedInstanceState);
  21.  
  22.        
  23.         // Create Expandable List and set it's properties
  24.         ExpandableListView expandableList = getExpandableListView();
  25.         expandableList.setDividerHeight(2);
  26.         expandableList.setGroupIndicator(null);
  27.         expandableList.setClickable(true);
  28.  
  29.         // Set the Items of Parent
  30.         setGroupParents();
  31.         // Set The Child Data
  32.         setChildData();
  33.  
  34.         // Create the Adapter
  35.         MyExpandableAdapter adapter = new MyExpandableAdapter(parentItems, childItems);
  36.  
  37.         adapter.setInflater((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE), this);
  38.        
  39.         // Set the Adapter to expandableList
  40.         expandableList.setAdapter(adapter);
  41.         expandableList.setOnChildClickListener(this);
  42.     }
  43.  
  44.     // method to add parent Items
  45.     public void setGroupParents()
  46.     {
  47.         parentItems.add("О сервере");
  48.         parentItems.add("Как начать ?");
  49.         parentItems.add("Новости");
  50.         parentItems.add("Помощь новичкам");
  51.     }
  52.  
  53.     // method to set child data of each parent
  54.     public void setChildData()
  55.     {
  56.  
  57.         // Add Child Items for Fruits
  58.         ArrayList<String> child = new ArrayList<String>();
  59.         child.add("История");
  60.         child.add("Первые сервера");
  61.         child.add("Описание серверов");
  62.        
  63.         childItems.add(child);
  64.  
  65.         // Add Child Items for Flowers
  66.         child = new ArrayList<String>();
  67.         child.add("Регистрация на сайте");
  68.         child.add("Скачивние лаунчера");
  69.         child.add("Вопросы по поводу лаунчера");
  70.         child.add("Игра");
  71.        
  72.         childItems.add(child);
  73.  
  74.         // Add Child Items for Animals
  75.         child = new ArrayList<String>();
  76.         child.add("Новости");
  77.         child.add("Баги, запрещенные предметы");
  78.         child.add("Администрация");
  79.         child.add("Правила");
  80.        
  81.         childItems.add(child);
  82.  
  83.         // Add Child Items for Birds
  84.         child = new ArrayList<String>();
  85.         child.add("Гайд Industral");
  86.         child.add("Гайд MagicRPG");
  87.         child.add("Гайд GunCraft");
  88.        
  89.         childItems.add(child);
  90.     }
  91.  
  92. }
  93.  



Код MyExpandableAdapter.java(Adapter кароч) :
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. package com.android.mcskill.ru;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. import android.app.Activity;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.view.ViewGroup;
  10. import android.widget.BaseExpandableListAdapter;
  11. import android.widget.CheckedTextView;
  12. import android.widget.TextView;
  13. import android.widget.Toast;
  14.  
  15. public class MyExpandableAdapter extends BaseExpandableListAdapter
  16. {
  17.  
  18.     private Activity activity;
  19.     private ArrayList<Object> childtems;
  20.     private LayoutInflater inflater;
  21.     private ArrayList<String> parentItems, child;
  22.  
  23.     // constructor
  24.     public MyExpandableAdapter(ArrayList<String> parents, ArrayList<Object> childern)
  25.     {
  26.         this.parentItems = parents;
  27.         this.childtems = childern;
  28.     }
  29.  
  30.     public void setInflater(LayoutInflater inflater, Activity activity)
  31.     {
  32.         this.inflater = inflater;
  33.         this.activity = activity;
  34.     }
  35.    
  36.     // method getChildView is called automatically for each child view.
  37.     //  Implement this method as per your requirement
  38.     @SuppressWarnings("unchecked")
  39.         @Override
  40.     public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
  41.     {
  42.  
  43.         child = (ArrayList<String>) childtems.get(groupPosition);
  44.  
  45.         TextView textView = null;
  46.  
  47.         if (convertView == null) {
  48.             convertView = inflater.inflate(R.layout.child_view, null);
  49.         }
  50.    
  51.          // get the textView reference and set the value
  52.         textView = (TextView) convertView.findViewById(R.id.textViewChild);
  53.         textView.setText(child.get(childPosition));
  54.  
  55.         // set the ClickListener to handle the click event on child item
  56.         convertView.setOnClickListener(new OnClickListener() {
  57.  
  58.             @Override
  59.             public void onClick(View view) {
  60.                 Toast.makeText(activity, child.get(childPosition),
  61.                         Toast.LENGTH_SHORT).show();
  62.             }
  63.         });
  64.         return convertView;
  65.     }
  66.  
  67.     // method getGroupView is called automatically for each parent item
  68.     // Implement this method as per your requirement
  69.     @Override
  70.     public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)
  71.     {
  72.  
  73.         if (convertView == null) {
  74.             convertView = inflater.inflate(R.layout.activity_main, null);
  75.         }
  76.  
  77.         ((CheckedTextView) convertView).setText(parentItems.get(groupPosition));
  78.         ((CheckedTextView) convertView).setChecked(isExpanded);
  79.  
  80.         return convertView;
  81.     }
  82.  
  83.     @Override
  84.     public Object getChild(int groupPosition, int childPosition)
  85.     {
  86.         return null;
  87.     }
  88.  
  89.     @Override
  90.     public long getChildId(int groupPosition, int childPosition)
  91.     {
  92.         return 0;
  93.     }
  94.  
  95.     @SuppressWarnings("unchecked")
  96.         @Override
  97.     public int getChildrenCount(int groupPosition)
  98.     {
  99.         return ((ArrayList<String>) childtems.get(groupPosition)).size();
  100.     }
  101.  
  102.     @Override
  103.     public Object getGroup(int groupPosition)
  104.     {
  105.         return null;
  106.     }
  107.  
  108.     @Override
  109.     public int getGroupCount()
  110.     {
  111.         return parentItems.size();
  112.     }
  113.  
  114.     @Override
  115.     public void onGroupCollapsed(int groupPosition)
  116.     {
  117.         super.onGroupCollapsed(groupPosition);
  118.     }
  119.  
  120.     @Override
  121.     public void onGroupExpanded(int groupPosition)
  122.     {
  123.         super.onGroupExpanded(groupPosition);
  124.     }
  125.  
  126.     @Override
  127.     public long getGroupId(int groupPosition)
  128.     {
  129.         return 0;
  130.     }
  131.  
  132.     @Override
  133.     public boolean hasStableIds()
  134.     {
  135.         return false;
  136.     }
  137.  
  138.     @Override
  139.     public boolean isChildSelectable(int groupPosition, int childPosition)
  140.     {
  141.         return false;
  142.     }
  143. }
  144.  


activity_main.xml :
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. <CheckedTextView
  2.        xmlns:android="http://schemas.android.com/apk/res/android"
  3.        xmlns:tools="http://schemas.android.com/tools"
  4.        android:id="@+id/textViewGroupName"
  5.        android:layout_width="wrap_content"
  6.        android:layout_height="60dp"
  7.        android:layout_marginLeft="5dp"
  8.        android:gravity="center_vertical"
  9.        android:text="@string/hello_world"
  10.        android:textSize="18sp"
  11.        android:textColor="#FFFFFF"
  12.        android:padding="10dp"
  13.        android:textSelectHandleLeft="@string/hello_world"
  14.        android:background="#009999"
  15.        android:textStyle="bold" />
  16.  


Код chil_view.xml:
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.    xmlns:tools="http://schemas.android.com/tools"
  3.    android:layout_width="match_parent"
  4.    android:layout_height="40dp"
  5.    android:background="#99D6D6"
  6.    android:clickable="true"
  7.    android:orientation="vertical"
  8.    android:paddingLeft="40dp"
  9.    tools:context=".MainActivity" >
  10.  
  11.     <LinearLayout
  12.        android:layout_width="match_parent"
  13.        android:layout_height="39dp"
  14.        android:gravity="center_vertical" >
  15.  
  16.         <ImageView
  17.            android:id="@+id/childImage"
  18.            android:layout_width="30dp"
  19.            android:layout_height="30dp"
  20.            android:layout_margin="5dp"
  21.            android:background="@drawable/ghz"
  22.            android:contentDescription="@string/hello_world" />
  23.  
  24.         <TextView
  25.            android:id="@+id/textViewChild"
  26.            android:layout_width="wrap_content"
  27.            android:layout_height="wrap_content"
  28.            android:layout_marginLeft="5dp"
  29.            android:text="@string/hello_world"
  30.            android:textSize="16sp"
  31.            android:textColor="#1919A3"
  32.            android:textStyle="bold" />
  33.     </LinearLayout>
  34.  
  35.     <View
  36.        android:layout_width="match_parent"
  37.        android:layout_height="1dp"
  38.        android:background="@android:color/white" />
  39.  
  40. </LinearLayout>




ЗАРАНЕЕ СПАСИБО !
Вот нашел такой код поместил в конце MainActivity:
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. @Override
  2. public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
  3.     // Create a switch that switches on the specific child position.
  4.     switch(childPosition) {
  5.     case 0:
  6.         // Go to child #0 specific class.
  7.         Intent child0Intent = new Intent(this, Child0Activity.class);
  8.         startActivity(child0Intent);
  9.         break;
  10.     case 1:
  11.         // Go to child #1 specific class.
  12.         Intent child1Intent = new Intent(this, Child1Activity.class);
  13.         startActivity(child1Intent);
  14.         break;
  15.     }
  16.     return false;
  17. }


Но когда нажимаю ничего не происходит

Вместо child0intent писал имя child элемента все равно ничего не произошло

_________________
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 19 ноя 2013, 11:41 
Аватар пользователя

Зарегистрирован: 28 сен 2013, 17:34
Сообщений: 450
Благодарил (а): 8 раз.
Поблагодарили: 110 раз.
trew писал(а):
Как в ExpandableListView
после того, как пользователь раскрыл очень длинную подгруппу, показать начало подгруппы?
(сейчас пользователь видит самый низ подгруппы, после раскрытия списка)

После такого кода:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. elvMain.setOnScrollListener(new OnScrollListener() {
  2.                         public void onScroll(AbsListView view, int first, int visible, int total) {
  3.                                
  4.                                 elvMain.setSelectionAfterHeaderView();
  5.                                 /*     
  6.                                                
  7.                                 Log.d(TAG, "first= " + first +", visible= " + visible + ",total= " + total);                           
  8.                                 */
  9.                         }
  10.  
  11.                         public void onScrollStateChanged(AbsListView view, int scrollState) {}
  12.                     });

прокрутка подгруппы не работает. Показывает всегда начало.
Условие IF что-то не могу придумать, может кто поможет.

Или может можно как-то иначе, куда вставить строку
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. elvMain.setSelectionAfterHeaderView();

(кажется, уже все события перебрал, не нашел рабочий вариант)
?

elvMain.setTranscriptMode(0); -- не помогает решить проблему.

Через длинное нажатие работает, но неудобно:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. // длинное нажатие на ExpandableListView
  2.                         elvMain.setOnItemLongClickListener(new OnItemLongClickListener() {
  3.                             @Override
  4.                             public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
  5.                                
  6.                                 elvMain.setSelectionAfterHeaderView(); 
  7.                                 Log.d(TAG, "--- длинное нажатие");
  8.                                 return false;
  9.                             }
  10.                         });
  11.  

_________________
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 30 ноя 2013, 19:08 
Аватар пользователя

Зарегистрирован: 27 сен 2013, 23:28
Сообщений: 41
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Помогите плиииииз

_________________
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 30 ноя 2013, 19:22 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
BeKZaT, а почему я должна расшифровывать это?
Цитата:
Можете мне изменить код так что бы при нажатий на child переходил на Activity находил в инете много но из за них появлялись ошибк

Это о чем?

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 01 дек 2013, 15:27 
Аватар пользователя

Зарегистрирован: 27 сен 2013, 23:28
Сообщений: 41
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Foenix писал(а):
BeKZaT, а почему я должна расшифровывать это?
Цитата:
Можете мне изменить код так что бы при нажатий на child переходил на Activity находил в инете много но из за них появлялись ошибк

Это о чем?

Я уже нашел ответ

Но появилась еще 1 проблема

Что такое child0Intent ?Это типа Id Child элемента ?
Вообщем вот код:
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. package kz.android.mcskill.ru;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6.  
  7. import ExpandableListAdapter.ExpandableListAdapter;
  8. import android.app.Activity;
  9. import android.content.Intent;
  10. import android.os.Bundle;
  11. import android.view.View;
  12. import android.widget.ExpandableListView;
  13. import android.widget.ExpandableListView.OnChildClickListener;
  14. import android.widget.ExpandableListView.OnGroupClickListener;
  15. import android.widget.Toast;
  16.  
  17. public class MainActivity extends Activity {
  18.  
  19.         ExpandableListAdapter listAdapter;
  20.         ExpandableListView expListView;
  21.         List<String> listDataHeader;
  22.         HashMap<String, List<String>> listDataChild;
  23.  
  24.         @Override
  25.         protected void onCreate(Bundle savedInstanceState) {
  26.                 super.onCreate(savedInstanceState);
  27.                 setContentView(R.layout.activity_main);
  28.  
  29.                 // get the listview
  30.                 expListView = (ExpandableListView) findViewById(R.id.lvExp);
  31.  
  32.                 // preparing list data
  33.                 prepareListData();
  34.  
  35.                 listAdapter = new ExpandableListAdapter(this, listDataHeader,
  36.                                 listDataChild);
  37.  
  38.                 // setting list adapter
  39.                 expListView.setAdapter(listAdapter);
  40.  
  41.                 // Listview Group click listener
  42.                 expListView.setOnGroupClickListener(new OnGroupClickListener() {
  43.  
  44.                         @Override
  45.                         public boolean onGroupClick(ExpandableListView parent, View v,
  46.                                         int groupPosition, long id) {
  47.                                 // Toast.makeText(getApplicationContext(),
  48.                                 // "Group Clicked " + listDataHeader.get(groupPosition),
  49.                                 // Toast.LENGTH_SHORT).show();
  50.                                 return false;
  51.                         }
  52.                 });
  53.  
  54.                 // Listview on child click listener
  55.                 expListView.setOnChildClickListener(new OnChildClickListener() {
  56.  
  57.                         @Override
  58.                         public boolean onChildClick(ExpandableListView parent, View v,
  59.                                         int groupPosition, int childPosition, long id) {
  60.                                 // TODO Auto-generated method stub
  61.                                 Toast.makeText(
  62.                                                 getApplicationContext(),
  63.                                                 listDataHeader.get(groupPosition)
  64.                                                                 + " : "
  65.                                                                 + listDataChild.get(
  66.                                                                                 listDataHeader.get(groupPosition)).get(
  67.                                                                                 childPosition), Toast.LENGTH_SHORT)
  68.                                                 .show();
  69.  
  70.                                 Intent child0Intent = new Intent(MainActivity.this,
  71.                                                 Server.class);
  72.                                 startActivity(child0Intent);
  73.                
  74.                                 Intent child1Intent = new Intent(MainActivity.this,
  75.                                                 Options.class);
  76.                                 startActivity(child1Intent);
  77.        
  78.                
  79.                                
  80.                                 return false;
  81.                                
  82.                         }
  83.                 });
  84.         }
  85.  
  86.         /*
  87.          * Preparing the list data
  88.          */
  89.         private void prepareListData() {
  90.                 listDataHeader = new ArrayList<String>();
  91.                 listDataChild = new HashMap<String, List<String>>();
  92.  
  93.                 // Adding child data
  94.                 listDataHeader.add("О сервере");
  95.                 listDataHeader.add("Как начать ?");
  96.                 listDataHeader.add("Новости");
  97.                 listDataHeader.add("Помощь новичкам");
  98.  
  99.                 // Adding child data
  100.                 List<String> О_сервере = new ArrayList<String>();
  101.                 О_сервере.add("История");
  102.                 О_сервере.add("Описание серверов");
  103.  
  104.                 List<String> Как_начать = new ArrayList<String>();
  105.                 Как_начать.add("Регистрация на сайте");
  106.                 Как_начать.add("Скачивние лаунчера");
  107.                 Как_начать.add("Вопросы по поводу лаунчера");
  108.                 Как_начать.add("Игра");
  109.  
  110.                 List<String> Новости = new ArrayList<String>();
  111.                 Новости.add("Новости");
  112.                 Новости.add("Баги, запрещенные предметы");
  113.                 Новости.add("Администрация");
  114.                 Новости.add("Правила");
  115.  
  116.                 List<String> Помощь = new ArrayList<String>();
  117.                 Помощь.add("Гайд по Industrial");
  118.                 Помощь.add("Гайд по MagicRPG");
  119.                 Помощь.add("Гайд по GunCraft");
  120.                 Помощь.add("Гайд Shop");
  121.  
  122.                 listDataChild.put(listDataHeader.get(0), О_сервере); // Header, Child
  123.                                                                                                                                 // data
  124.                 listDataChild.put(listDataHeader.get(1), Как_начать);
  125.                 listDataChild.put(listDataHeader.get(2), Новости);
  126.                 listDataChild.put(listDataHeader.get(3), Помощь);
  127.         }
  128. }

_________________
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 21 янв 2014, 09:05 

Зарегистрирован: 24 июн 2012, 20:54
Сообщений: 4
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Добрый день.
Спасибо за доходчивые уроки. Все работает.
Теперь пытаюсь усложнить задачу.
Список заполняю на основе запроса к базе данных. Т.е. прохожу по курсору и заполняю childDataItem, childData,groupData
После того, как выбрано значение из списка, нужно найти его в базе данных.
Можно конечно искать по имени пункта, но не факт, что он будет уникальным, поэтому хотелось бы получать некий уникальный идентификатор, связанный с id записи в таблице.
К сожалению, при ручном заполнении onChildClick() дает childPosition и id, которые совпадают, и по сути являются номером значения в группе.
Понятно, что для того что бы получить id записи в таблице, нужно его как-то учитывать при создании списка, но как учитывать?
Или нужно создавать какую-нибудь параллельную структуру данных, в которой сопоставлять номер группы, номер пункта в группе и id значения в таблице БД(ИМХО, как убого)?

Посоветуйте пожалуйста.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 46. События ExpandableListView
СообщениеДобавлено: 21 янв 2014, 09:14 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
Для работы с базой используйте CursorTreeAdapter или классы порожденные от него, например, SimpleCursorTreeAdapter.

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB