在ListView中實現多種布局可以通過重寫Adapter的getViewTypeCount()和getItemViewType()方法來實現。在getViewTypeCount()方法中返回布局的種類數量,在getItemViewType()方法中根據position返回對應位置的布局類型。
具體步驟如下:
創建不同類型的布局文件,例如layout_type1.xml和layout_type2.xml。
創建一個自定義的Adapter類,繼承自BaseAdapter,并重寫getViewTypeCount()和getItemViewType()方法。
public class CustomAdapter extends BaseAdapter {
private static final int TYPE_1 = 0;
private static final int TYPE_2 = 1;
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
if (position % 2 == 0) {
return TYPE_1;
} else {
return TYPE_2;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
if (type == TYPE_1) {
convertView = inflater.inflate(R.layout.layout_type1, parent, false);
} else {
convertView = inflater.inflate(R.layout.layout_type2, parent, false);
}
}
// 設置布局中的數據
if (type == TYPE_1) {
// 設置type1布局中的數據
} else {
// 設置type2布局中的數據
}
return convertView;
}
}
CustomAdapter adapter = new CustomAdapter();
listView.setAdapter(adapter);
通過以上步驟,就可以在ListView中實現多種布局。在getView()方法中根據position返回不同類型的布局,然后設置對應布局中的數據。