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