Как добавить изображение в расширяемый список в parent в android?

Можно ли настроить ребенка в расширяемом списке?

Работа с SimpleExpandableListAdapter совсем не проста. Вот код, который должен вас запустить, при условии, что вы используете ExpandableListActivity .

В этом примере мы используем стандартный android.R.layout.simple_expandable_list_item_1 для нашего представления заголовка группы, но мы используем собственный собственный макет для детей.

  // Construct Expandable List final String NAME = "name"; final String IMAGE = "image"; final LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); final ArrayList> headerData = new ArrayList>(); final HashMap group1 = new HashMap(); group1.put(NAME, "Group 1"); headerData.add( group1 ); final HashMap group2 = new HashMap(); group2.put(NAME, "Group 2"); headerData.add( group2); final ArrayList>> childData = new ArrayList>>(); final ArrayList> group1data = new ArrayList>(); childData.add(group1data); final ArrayList> group2data = new ArrayList>(); childData.add(group2data); // Set up some sample data in both groups for( int i=0; i<10; ++i) { final HashMap map = new HashMap(); map.put(NAME, "Child " + i ); map.put(IMAGE, getResources().getDrawable(R.drawable.icon)); ( i%2==0 ? group1data : group2data ).add(map); } setListAdapter( new SimpleExpandableListAdapter( this, headerData, android.R.layout.simple_expandable_list_item_1, new String[] { NAME }, // the name of the field data new int[] { android.R.id.text1 }, // the text field to populate with the field data childData, 0, null, new int[] {} ) { @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { final View v = super.getChildView(groupPosition, childPosition, isLastChild, convertView, parent); // Populate your custom view here ((TextView)v.findViewById(R.id.name)).setText( (String) ((Map)getChild(groupPosition, childPosition)).get(NAME) ); ((ImageView)v.findViewById(R.id.image)).setImageDrawable( (Drawable) ((Map)getChild(groupPosition, childPosition)).get(IMAGE) ); return v; } @Override public View newChildView(boolean isLastChild, ViewGroup parent) { return layoutInflater.inflate(R.layout.expandable_list_item_with_image, null, false); } } ); 

И внутри настраиваемого дочернего макета с именем expandable_list_item_with_image.xml :

      

Вы можете попробовать создать свой собственный адаптер списка, который расширяет BaseExpandableListAdapter, как описано в документации .

Затем переопределите getGroupView(..) (для родительского элемента или getChildView для дочернего элемента), и в этой функции вы можете раздуть свой собственный макет xml.

что-то вроде этого:

 public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { //sender is activity from where you call this adapter. Set it with construktor. LayoutInflater vi = (LayoutInflater)sender.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.row, null); } //children = arraylists of Child Child c = children.get(childPosition); if (c != null) { TextView tt = (TextView) v.findViewById(R.id.toptext); TextView bt = (TextView) v.findViewById(R.id.bottomtext); ImageView icon = (ImageView) v.findViewById(R.id.rowicon); if (tt != null) { tt.setText(c.text1); } if(bt != null){ bt.setText(c.text2); } if (icon != null) { icon.setImageResource(R.drawable.rowicon); } } return v; } 

макет xml:

         

После переопределения getGroupView вы можете использовать функцию setCompoundDrawablesWithIntrinsicBounds для добавления изображения.

 @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View v = super.getGroupView(groupPosition, isExpanded, convertView, parent); TextView tv = (TextView) v.findViewById(R.id.textViewId); tv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.imageToAdd, 0, 0, 0); return v; } 

Я просто нашел лучший способ, вы можете просто добавить

android:drawableRight="@drawable/icon" строка в макет xml-файла группы списка.

Попробуйте это >>> Учебник

И вы можете обновить его, чтобы добавить изображение вместо текста в дочерний xml-файл

  • Общее решение Ruby для SQLite3 «LIKE» или PostgreSQL «ИЛИКЕ»?
  • Изменение размера текстового поля UISearchBar?
  • mongodb найти несколько элементов массива
  • Реализация расстояния Левенштейна для mysql / нечеткого поиска?
  • grep файл, но показывать несколько окружающих линий?
  • Алгоритм дерева суффикса Ukkonen на простом английском языке
  • Как объединить 2 или более запросов в представлении Django?
  • Проверьте, присутствует ли элемент в массиве Bash
  • Алгоритм поиска двух повторяющихся чисел в массиве без сортировки
  • Java - регулярное выражение, содержащее комментарии в коде
  • Исключить папки из поиска Eclipse
  • Давайте будем гением компьютера.