2010-12-28 12 views
0

ExpandableListActivityの子行にListViewを使用し、そのためにカスタムCursorTreeAdapterを定義しました。値とビューには期待どおりにコードが挿入されますが、展開可能な各行(ListViewの項目数が可変)は部分的にしか表示されません(最初の2項目のみが表示されます)。ExpandableListActivityに埋め込まれたリストビューは、画面上に部分的にしか表示されません。

  1. コードをデバッグしている間、私は私が変更、ただ、さらに確認するために

  2. (それはそれで10〜15行である)適切に移入されているすべての子行(ListView)ことを確認しましたの場合はandroid:stackFromBottom = "true"ですが、今回は展開可能なアイテムの行ごとに最後の2アイテムのみが表示されました。

`

public class WorkExpandableListAdapter extends CursorTreeAdapter { 

public WorkExpandableListAdapter(Cursor cursor, Context context) { super(cursor, context, true); } 

protected Cursor getChildrenCursor(Cursor groupCursor) { ... return childCursor; } 

@Override 
protected void bindChildView(View view, Context context, Cursor cursor, 
    boolean isLastChild) { 

    if (!noColumnsToDisplay) { 
    int numColumns = workProjection.length + 1; // to skip the _id 
    ArrayList<JXTField> jxtFields = new ArrayList<JXTField>(); 
    for (int i = 1; i < numColumns; i++) { 
    jxtFields.add(new JXTField(workProjection[i - 1], 
     cursor.getString(cursor 
     .getColumnIndex(workProjection[i - 1])))); 
    } 

//OrderAdapter is simply a customized Array adapter which converts name value pairs into //customized 2 line items 

    ArrayAdapter<JXTField> adapter = new OrderAdapter(WorkList.this, 
    R.layout.work_view_row, jxtFields); 
    ((ListView) view.findViewById(R.id.expandable_child_list)) 
    .setAdapter(adapter); 
    } 
} 

@Override 
public View newChildView(Context context, Cursor cursor, boolean isLastChild, ViewGroup parent) { 
    return getLayoutInflater().inflate(R.layout.expandable_child_list,null); } 

@Override 
protected void bindGroupView(View view, Context context, Cursor cursor, boolean isExpanded) { ... } 

@Override 
protected View newGroupView(Context context, Cursor cursor, boolean isExpanded, ViewGroup parent) { 
    return ((TextView) getLayoutInflater().inflate(android.R.layout.simple_expandable_list_item_1, null)); 
} 
} 

`

expandable_child_list.xml

`

<ListView 
    android:id="@+id/expandable_child_listt" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:paddingLeft="20dp"  
    android:layout_weight="2.0"  
    /> 

`

work_view_row.xml`

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="0dip" 
    android:layout_weight="1" 
    android:layout_height="fill_parent"> 

    <TextView 
     android:id="@+id/work_view_row_top_text" 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" 
     android:gravity="center_vertical" 
    /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" 
     android:id="@+id/work_view_row_bottom_text" 
     android:ellipsize="marquee" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
    /> 

</LinearLayout> 

`

これは私が最初にそれに遭遇したときに解決するために簡単なもののように見えたが、それにあまりにも多くの時間を無駄にした後、私はに頼ります指導者。たぶん私は何か非常に明白な行方不明ですが、指摘してください。 :(事前に

感謝。

答えて

0

私はonMeasure()をオーバーライドするサブクラスListViewを使用して問題を解決することができました。

以下の2つのポストは、正しい方向に私を指している非常に有用だった。
1. How do I create a ListView that's not in a ScrollView, or has the ScrollView disabled?
2. Calculate the size of a list view or how to tell it to fully expand

しかし、私はまだ、これは周りに肥大化した作品だったと感じ、そしてビューがから返された理由はわかりませんListViewとその容器(LinearLayout)にandroid:layout_height="fill_parent"が設定されていても、ListViewが完全に拡張することはできません。

誰かが理由を指摘できれば、それは素晴らしいことでしょう。
ありがとうございます。

関連する問題