阅读量:0
在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; } }
- 在Activity中设置ListView的Adapter为自定义的Adapter。
CustomAdapter adapter = new CustomAdapter(); listView.setAdapter(adapter);
通过以上步骤,就可以在ListView中实现多种布局。在getView()方法中根据position返回不同类型的布局,然后设置对应布局中的数据。