2013-10-01 3 views
0

Я пытаюсь реализовать сценарий, в котором пользователь будет выбирать один из вариантов среди многих в группе. Смотрите рисунок ниже:Как получить ссылку для детского просмотра sibling в группе expandablelistview

enter image description here

На рисунке выше, под названием группы Соус, есть 3 варианта. Пользователю необходимо проверить только один вариант. например Если пользователь ранее выбрал «Горячий». После этого он нажимает на «Mild», после чего проверка должна исчезнуть из «Hot» и появится на «Mild». Надеюсь, вы поняли это.

Для достижения такого подхода, мне нужно иметь ссылку либо a group's childviews или individual checks, так что я могу переключать свои флажки. Я действительно не знаю, что делать в этот момент ... Пожалуйста, помогите мне. Спасибо ..

childlayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="10dip" > 

    <TextView 
     android:id="@+id/childname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Large Text" 
     android:layout_alignParentLeft="true" 
     android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <ImageView 
android:id="@+id/checkmark" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignBottom="@+id/childname" 
android:layout_alignParentRight="true" 
android:layout_marginRight="22dp" 
android:background="@android:color/transparent" 
android:src="@drawable/checkmark" /> 
</RelativeLayout> 

Детский OnClick Слушатель

list.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 

        @Override 
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { 

        //how to get reference to other children here to toggle checkmark of current as well as previously tapped child's checkmark? 

         return false; 
        } 
       }); 
+0

Пожалуйста, пост макета XML фрагмент из 'Sauce' в' Дополнительные hot' – ssantos

+0

@ssantos я уже писал XML. текст просто подбирается из списка как для дочерних представлений группы n. – NightFury

ответ

2

Я использовал HashMap для хранения ссылок всех детей, когда они были созданы в getChildView. В моем пользовательском адаптере, я объявил:

private HashMap<String, View> childviewReferences = new HashMap<String, View>(); 

public View getChildView(int groupPosition, int childPosition, 
      boolean isLastChild, View convertView, ViewGroup parent) { 

    final String childStr = (String) getChild(groupPosition, childPosition); 

     LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);//context.getLayoutInflater(); 

    convertView = inflator.inflate(R.layout.childlayout, null); 

    TextView textview = (TextView) convertView.findViewById(R.id.childname); 
       textview.setText(childStr); 
    childviewReferences.put(Integer.toString(groupPosition) + Integer.toString(childPosition), convertView); 

     return convertView; 
    } 

ребенка OnClick Слушатель

list.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 

       @Override 
       public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { 

CreatePizzaAdapter adapter = (CreatePizzaAdapter) parent.getExpandableListAdapter(); 

     View conv = adapter.getChildviewReferences().get(Integer.toString(groupPosition) + Integer.toString(childPosition)); 

        //now you can find any view and child and do anything 
         return true; 
        } 
       }); 
Смежные вопросы