2

我有一個listview作爲一個孩子的列表視圖。我的問題是,子列表不會展開顯示所有項目。Android的ListView內的ListView不擴大顯示所有項目

父佈局

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="0px" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/site_wallet_header" 
     style="@style/Home.ListHeader" /> 

    <ListView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/site_wallet_list" /> 


</LinearLayout> 

子佈局

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    style="@style/ListItem" 
    android:layout_gravity="center_vertical" 
    android:gravity="center"> 

    <ImageView 
     android:id="@+id/bank_icon" 
     android:layout_height="wrap_content" 
     android:layout_width="0dip" 
     android:layout_weight="1" /> 

    <TextView 

     android:id="@+id/bank_name" 
     android:layout_height="wrap_content" 
     android:layout_width="0dip" 
     android:layout_weight="4" 
     style="@style/ListItem.Text"/> 

</LinearLayout> 

父集合ArrayAdapter

public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    if (v == null) { 
     LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(resourceId, null); 
    } 

    AccountSummary account = accounts.get(position); 

    if (account != null) 
    { 
     TextView header = (TextView) v.findViewById(R.id.site_wallet_header); 
     header.setText(account.Name); 

     if (account.Banks.length == 0) { 
      //LinearLayout noBanks = (LinearLayout) context.getLayoutInflater().inflate(R.layout.no_banks, null); 
     } else { 
      ListView banksList = (ListView) v.findViewById(R.id.site_wallet_list); 
      //banksList.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); 

      banksList.clearChoices(); 
      banksList.setAdapter(new BankSummaryAdapter(context, R.layout.list_item_bank, account.Banks)); 
     } 
    } 

    return v; 
} 

兒童收集ArrayAdapter

public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    if (v == null) { 
     LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(resourceId, null); 
    } 

    BankSummary bank = items.get(position); 

    if (bank != null) 
    { 
     TextView nameText = (TextView) v.findViewById(R.id.bank_name); 
     ImageView iconImage = (ImageView) v.findViewById(R.id.bank_icon); 

     nameText.setText(bank.DisplayName); 

     Resources res = context.getResources(); 


     switch (bank.BankCode) 
     { 
      case 'V': 
       iconImage.setImageDrawable(res.getDrawable(R.drawable.ic_visa)); 
       break; 
      case 'M': 
       iconImage.setImageDrawable(res.getDrawable(R.drawable.ic_mastercard)); 
       break; 
      case 'D': 
       iconImage.setImageDrawable(res.getDrawable(R.drawable.ic_discover)); 
       break; 
      case 'A': 
       iconImage.setImageDrawable(res.getDrawable(R.drawable.ic_american_express)); 
       break; 
      default: 
       iconImage.setImageDrawable(res.getDrawable(R.drawable.ic_echeck)); 
       break; 
     } 
    } 

    return v; 
} 

這是它在做什麼。

frustration

我在這裏的目標是有動態加載這些頭列表。這個屏幕可以滾動,子列表總是顯示每個項目。但是,無論我嘗試什麼,我似乎都無法讓孩子名單完全展開。我真的想避免在代碼中構建整個事物。

回答

3

我相信你會有更好的運氣,通過使用ExpandableListViewExpandableListAdapter而不是這個複雜的佈局。

然後,您可以通過它們迭代,並呼籲expandGroup(int groupPos)

+0

作品就像一個冠軍展開各組。謝謝! – Josh 2011-06-07 14:20:07