具有多种布局的 Android ListView

dev*_*oid 6 android listview layout-inflater baseadapter getview

我必须显示具有不同类型视图的列表。所以我必须定义一个带有适配器的 ListView,我必须在其中膨胀多个视图。我已经完成了给出的示例,但问题是我的列表不对称,就像在 4 个项目之后每次重复标题的示例一样。所以我面临着重用物品的问题getView()

 public View getView(int position, View convertView, ViewGroup parent) {   
    int type = getItemViewType(position);
    if (convertView == null) {
        holder = new ViewHolder();
        switch (type) {
             case TYPE_1:
             convertView = mInflater.inflate(R.layout.item1, null);
             .......
             break;

             case TYPE_2:
             convertView = mInflater.inflate(R.layout.item2, null);
             .......
             break;
        }
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder)convertView.getTag();
    }
    ............
    ............
}
Run Code Online (Sandbox Code Playgroud)

现在,如果 convertView 不为空,但之前使用的项目类型不同,则布局将不匹配。这段代码将如何处理这个问题?

rub*_*ees 0

您可以通过重写方法来做到这getViewCount()一点getItemViewType(int position)

首先,您只需返回您拥有的不同视图的数量。

在第二个中,您为每个不同的视图返回一个唯一的标识符。

在您的getView()方法中,您检查视图类型并为其填充正确的布局。

有关该主题的更多信息:每行具有不同布局的 Android ListView

Android ListView 每行具有不同的布局