2015-12-11 2 views
2

Я искал ответ на вопрос, но я ничего не нашел для меня.ExpandableListView не работает

Я хочу использовать ExpandableListView в моем проекте. Я получаю код из примера, но он не работает (не расширяет вид элемента).

Это мой XML:

<ExpandableListView 
    android:id="@+id/exListView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:indicatorLeft="250dp" 
    android:indicatorRight="300dp" /> 

И этот код:

mExpandableListView = (ExpandableListView) parent.findViewById(R.id.exListView); 

    ArrayList<ArrayList<String>> groups = new ArrayList<ArrayList<String>>(); 
    ArrayList<String> children1 = new ArrayList<String>(); 
    ArrayList<String> children2 = new ArrayList<String>(); 
    children1.add("Child_1"); 
    children1.add("Child_2"); 
    groups.add(children1); 
    children2.add("Child_1"); 
    children2.add("Child_2"); 
    children2.add("Child_3"); 
    groups.add(children2); 

    ExpListAdapter adapter = new ExpListAdapter(getActivity(), groups); 
    mExpandableListView.setAdapter(adapter); 

И это мой адаптер:

private class ExpListAdapter extends BaseExpandableListAdapter { 

    private ArrayList<ArrayList<String>> mGroups; 
    private Context mContext; 

    public ExpListAdapter (Context context,ArrayList<ArrayList<String>> groups){ 
     mContext = context; 
     mGroups = groups; 
    } 

    @Override 
    public int getGroupCount() { 
     return mGroups.size(); 
    } 

    @Override 
    public int getChildrenCount(int groupPosition) { 
     return mGroups.get(groupPosition).size(); 
    } 

    @Override 
    public Object getGroup(int groupPosition) { 
     return mGroups.get(groupPosition); 
    } 

    @Override 
    public Object getChild(int groupPosition, int childPosition) { 
     return mGroups.get(groupPosition).get(childPosition); 
    } 

    @Override 
    public long getGroupId(int groupPosition) { 
     return groupPosition; 
    } 

    @Override 
    public long getChildId(int groupPosition, int childPosition) { 
     return childPosition; 
    } 

    @Override 
    public boolean hasStableIds() { 
     return true; 
    } 

    @Override 
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, 
          ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.activity_repair_tune_detail_item, null); 

     return convertView; 

    } 

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

     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.order_part_open_layout, null); 
     return convertView; 
    } 

    @Override 
    public boolean isChildSelectable(int groupPosition, int childPosition) { 
     return true; 
    } 
} 

Я могу видеть группы в ExpandableListView, но когда я нажимаю на элемент не расширяется.

+0

Вы помещаете параметр в дочерний список? ничего не было в getchildView – devcelebi

ответ

1

Вы должны использовать

"реализует OnChildClickListener, ExpandableListView.OnGroupClickListener"

в классе, где вы будете использовать свой ExpandableListView.

После инициализации вашего ListView вы устанавливаете слушателя, где вы реализуете расширяемое listview.

customListView.setOnGroupClickListener(this); 
customListView.setOnChildClickListener(this); 

и переопределить методы

onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) 

onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id). 

Я думаю, что будет исправить вашу проблему.

+0

написать полный ответ pls – Artem

+0

сделал редактирование ... – Emdja

1

Я думаю, что в вашем заголовке заголовка группы «activity_repair_tune_detail_item» могут содержаться любые настраиваемые элементы, такие как Checkbox или Button или Edittext. если это правда, попробуйте добавить android:focusable="false" к ним. код, загруженный вами, работает правильно для меня.

Смежные вопросы