将全宽标题项添加到AbsListView(Xamarin)中的网格视图

时间:2016-02-07 22:01:54

标签: android listview gridview xamarin customization

我的应用程序中有一个列表,它是作为AbsListView实现的,因此当我们在较小的屏幕(手机)上工作时,它是一个列表,当我们在更大的屏幕(平板电脑)上时,它就是一个网格。 一切顺利。

现在我想添加一个与我列表中的常规项完全不同的标题项 - 它有一个完全不同的xml文件。它始终是列表中的第一项。

我已将代码添加到我的Adapter类中,如下所示:

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        SavedInfo subViews = null;
        var rowView = convertView;
        var channel = items[position];

        // don't want to reuse if our previous view was a header
        if (rowView?.Tag != null)
        {
            subViews = rowView.Tag as SavedInfo;
        }

        // try to put in a different view if there is a header shown
        // special id value for header is -1
        if (position == 0)
        {
            subViews = null;
        }

        if (subViews == null)
        {
            if (position == 0)
            {
                rowView = context.Activity.LayoutInflater.Inflate(Resource.Layout.header_layout, null);

                // Do setup stuff with this layout
                rowView.Tag = null;
                return rowView;
            }

            rowView = context.Activity.LayoutInflater.Inflate(cellLayout, null);

            // Do stuff with regular layout, take savedInfo from Tag
            rowView.Tag = subViews;
        }

        // other adjustments to the regular layout

        return rowView;
    }

所以在常规列表中没问题 - 我有一个标题项和许多常规项。但是,当我切换到GridView(使用相同的适配器)时,我的“标题”项目现在只是网格中的第一个单元格。

想要它与列表视图中的内容大致相同 - 单个列填充屏幕宽度,然后是常规网格。关键是我想要一个填充所有列的项目,但向上滚动网格。有没有办法做到这一点?我知道我可能需要替换某种自定义适配器视图。有没有人有一个代码做一个网格的例子,一个项目填充多个网格列?

由于

1 个答案:

答案 0 :(得分:0)

原来这是不可能的 - 建议放入标题的方法是在将ListView更改为RecyclerView时使用CoordinatorLayout和CollapsingToolbarLayout