2012-01-25 10 views
0

私は、各リスト項目の水平LinearLayoutsの垂直LinearLayoutを含むカスタムListViewを持っています。水平LinearLayoutには4つのボタンがあります。問題は、リストビューを表示すると4つのボタンのうちの1つだけが表示されていることです。カスタムListViewは、4つではなく1つの子を表示します。

私は私の空の垂直のLinearLayoutがあります。

<?xml version="1.0" encoding="utf-8"?> 
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="6dip" 
    android:background="@color/all_white" 
    android:orientation="vertical" 
    android:id="@+id/linear_layout" 
    /> 

私の横のLinearLayout:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:padding="6dip" 
android:background="@color/all_white"> 
<Button 
    android:id="@+id/ws_1" 
    android:layout_width="175dip" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="8dip" 
    android:paddingTop="10dip" 
    android:paddingBottom="10dip" 
    /> 
<Button 
    android:id="@+id/ws_2" 
    android:layout_width="175dip" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="8dip" 
    android:paddingTop="10dip" 
    android:paddingBottom="10dip" 
    /> 
<Button 
    android:id="@+id/ws_3" 
    android:layout_width="175dip" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="8dip" 
    android:paddingTop="10dip" 
    android:paddingBottom="10dip" 
    /> 
<Button 
    android:id="@+id/ws_4" 
    android:layout_width="175dip" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="8dip" 
    android:paddingTop="10dip" 
    android:paddingBottom="10dip" 
    />  
</LinearLayout> 

とカスタムBaseAdapterクラスの私のgetViewメソッド:

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewGroup viewGroup = null; 
    int numRows = 0; 

    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) _activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     viewGroup = (ViewGroup) inflater.inflate(R.layout.linear_layout, null); 
    } else { 
     viewGroup = (ViewGroup) convertView; 
     numRows = viewGroup.getChildCount(); 
    } 
    _keys = (String[]) _workspacesMap.keySet().toArray(new String[_workspacesMap.size()]); 
    List<WorkspaceInfo> workspaces = new ArrayList<WorkspaceInfo>(); 
    try { 
     if (_keys[position] != null) { 
      workspaces = _workspacesMap.get(_keys[position]); 
      Collections.sort(workspaces, new InfoNameComparator()); 
     } 
    } catch (ArrayIndexOutOfBoundsException e) { 
     // 
    } 

    int totalRows = 0; 
    if (workspaces.size() > 0) { 
     totalRows = workspaces.size()/4 + 1; 
     if (totalRows % 4 != 0) { 
      totalRows++; 
     } 
    } 

    if (numRows < totalRows) { 
     for (int i = numRows; i < totalRows; i++) { 
      View view; 
      LayoutInflater inflater = (LayoutInflater) _activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = (View) inflater.inflate(R.layout.list_row_multi_ws, null); 
      viewGroup.addView(view, i); 
     } 
    } else if (numRows > totalRows) { 
     for (int i = totalRows; i >= numRows; i--) { 
      viewGroup.removeViewAt(totalRows); 
     } 
    } 

    Iterator<WorkspaceInfo> iterator = workspaces.iterator(); 
    for (int i = 0; i < viewGroup.getChildCount(); i++) { 
     ViewGroup temp = (ViewGroup) viewGroup.getChildAt(i); 
     for (int j = 0; j < temp.getChildCount(); j++) { 
      Button button = (Button) temp.getChildAt(j); 
      if (iterator.hasNext()) { 
       String buttonText = iterator.next().getTitle(); 
       button.setText(buttonText); 
      } else { 
       button.setVisibility(View.GONE); 
      } 
     } 
    } 
    return viewGroup; 
} 
+0

ボタンの表示を設定します。 if(iterator.hasNext()){ String buttonText = iterator.next()。getTitle(); button.setText(buttonText);button.setVisibility(View.VISIBLE); } – benkdev

答えて

0

は、あなたのインフレートを変更しよう方法:

inflater.inflate(R.layout.linear_layout, parent, false); 

+0

私は両方のレイアウトでそれを試しましたが、変更はありませんでした。 – benkdev

関連する問題