2015-02-18 3 views
1

У меня есть BaseExpandableListAdapter с ExpandableListView, но мне не удается получить мой дочерний объект ViewHolder, инициализированный в правильном представлении. Я ставлю точку останова в getChildView и первый раз его называют все нормальноBaseExpandableListAdapter с ExpandableListView возвращает неверный дочерний вид

groupPosition: 0, childPosition: 0, convertView: нулевой

ViewHolder получает набор, и мы хороши для первой строки (0). В следующий раз он вызывается я получаю:

groupPosition: 0, childPosition: 1, convertView: ViewHolder объект из ряда (0)

Почему возвращаются вид из строки 0? Я включил методы, которые я переопределяю из BaseExpandableListAdapter. Есть ли другой метод (ы), который мне нужно переопределить, чтобы получить правильное представление?

child_layout.xml 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:weightSum="9"> 
    <LinearLayout android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal" 
        android:layout_weight="1"> 
     <EditText.../> 
    </LinearLayout> 
    ... 
</LinearLayout> 




// Group and children are both collections 
@Override 
public int getGroupCount() { 
    return group.size(); 
} 

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

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

@Override 
public Object getChild(int groupPosition, int childPosition) { 
    return group.get(groupPosition).getChildren().toArray()[childPosition]; 
} 

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

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

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

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

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

    final GroupViewHolder groupViewHolder; 
    if(null == convertView) { 
     convertView = LayoutInflater.from(context).inflate(R.layout.group_layout, parent, false); 
     groupViewHolder = new GroupViewHolder(); 
     // add delete group button 
    } else { 
     groupViewHolder = (GroupViewHolder) convertView.getTag(); 
    } 
    return convertView; 
} 

@Override 
public View getChildView(final int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
    View v = convertView; 
    final ViewHolder viewHolder; 
    if (null == v){ 
     v = LayoutInflater.from(context).inflate(child_layout, parent, false); 
     viewHolder = new ViewHolder(); 
     // bind edittext fields 
     v.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) v.getTag(); 
    } 
    return v; 
} 
+0

удалить ваши, если и еще и поставить эту ..если (convertView == NULL) { \t LayoutInflater infalInflater = (LayoutInflater) this._context \t .getSystemService (Context.LAYOUT_INFLATER_SERVICE); \t convertView = infalInflater.inflate (R.layout.child_layout, null); \t} – Pavya

+0

Не повезло, в том же номере – bmurmistro

ответ

1

В моем макете страницы содержался вертикальный LinearLayout, который завернул все. У меня был layout_height = "wrap_content". Изменение этого параметра в match_parent исправило проблему. Надеюсь, это поможет кому-то.

+0

Эй, ты классный. Это настолько глупо в Android, насколько непоследовательной дочерней позицией является то, что ваше расширенное представление списка - это обертка контента ... Это ДЕЙСТВИТЕЛЬНО отбрасывало мои данные/представления. Я почти просто использовал групповое положение и вытащил всех детей и создал макеты для каждого из них за один выстрел (только для детей). Спасибо, сэр! –

+0

Рад, что я могу помочь! – bmurmistro

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