Android Gridview全宽分隔符

Android Gridview全宽分隔符,android,gridview,Android,Gridview,我有一些数据的ArrayList阵列列表包括不同类别的对象(类别1、类别2、类别3等)。我想在GridView中显示我的列表 我的xml看起来: <GridView android:id="@+id/gv_my_grid" style="@style/fill_wrap" android:cacheColorHint="@null" android:layout

我有一些数据的
ArrayList
<代码>阵列列表包括不同类别的对象(类别1、类别2、类别3等)。我想在
GridView
中显示我的列表

我的xml看起来:

 <GridView
                android:id="@+id/gv_my_grid"
                style="@style/fill_wrap"
                android:cacheColorHint="@null"
                android:layout_margin="10dp"
                android:numColumns="3"
                android:listSelector="@android:color/transparent"
                android:stretchMode="columnWidth"
                android:gravity="center"
                />
但现在我想在不同的分类项目之间放置全宽水平分隔线。它必须看起来像:

___________category_1_____________________________
|item 1 (cat 1)| |item 2 (cat 1)| |item 3 (cat 1)|
|item 4 (cat 1)| 
___________category_2_____________________________
|item 5 (cat 2)| |item 6 (cat 2)|
___________category_1_____________________________
|item 7 (cat 3)| |item 8 (cat 3)| |item 9 (cat 3)|
这可能吗?导致所有我发现的-仅
ListView
实现

编辑:

我被要求为我的适配器添加代码。我认为
getView
方法就足够了

public View getView(int position, View view, ViewGroup viewGroup) {
        final Holder holder;
        final View cell;
        if (null == view) {
            cell = this.inflater.inflate(R.layout.gi_my_item, null);
            holder = new Holder(cell);
            cell.setTag(holder);
        } else {
            cell = view;
            holder = (Holder) cell.getTag();
        }
        holder.item = this.items.get(position);
        holder.textField.setText(holder.item.someText);
        return cell;
    }

要达到此目的,必须在
列表视图中合成
GridView
。使用
CustomAdapter
您可以做到这一点,
ListView
作为父项,
GridView
作为
row\u项
我发现您可以使用
RecyclerView
GridLayoutManager
来完成这些工作

下面是如何执行此操作的代码

GridLayoutManager manager = new GridLayoutManager(this, 3);
这将创建具有三列的轴网

使用
setPansizeLookup()
方法进行回调以返回每个项的列范围

manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                return (elementsAdapter.getItemViewType(position) == VIEW_HEADER) ? 3 : 1;
            }
        });
当它是标题类型时,它将成为三列跨度

此外,您必须制作两个
RecyclerView.ViewHolder
,并使用
getItemViewType()
以区别于
RecyclerView.Adapter中的项目视图和标题视图

我为它制作了一些示例代码。


参考资料:

没关系。。您需要使用分段适配器。。看看图书馆。。你可以用这个…哦。。。谢谢我想——这是我能找到的最好的。
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                return (elementsAdapter.getItemViewType(position) == VIEW_HEADER) ? 3 : 1;
            }
        });