각 목록 항목에 대한 가로 LinearLayouts의 세로 LinearLayout을 포함하는 사용자 지정 ListView가 있습니다. 수평 LinearLayout에는 4 개의 버튼이 있습니다. 문제는 ListView를 표시 할 때 4 개의 버튼 중 단 하나만 표시된다는 것입니다.사용자 지정 목록 모든 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