如何在android中以相同的布局(RecyclerView或类似的东西)添加网格和列表?

如何在android中以相同的布局(RecyclerView或类似的东西)添加网格和列表?,android,listview,android-recyclerview,android-linearlayout,android-relativelayout,Android,Listview,Android Recyclerview,Android Linearlayout,Android Relativelayout,我想在android中以相同的布局(RecyclerView或类似的东西)添加网格和列表。 其中网格可以是多个产品和用于标记产品的列表。网格宽度中的2个产品。 这是我在RecyclerView中为仅限项目的图像->: 现在我想给下面的项目贴上标签 我希望它是这样的,可能以一种有效的方式,图像->: 尝试在同一RecycleView中添加标签和项目,标签也作为产品项目添加 公共类CustomCategoryAdapter扩展了RecyclerView.Adapter{ private List

我想在android中以相同的布局(RecyclerView或类似的东西)添加网格和列表。 其中网格可以是多个产品和用于标记产品的列表。网格宽度中的2个产品。 这是我在RecyclerView中为仅限项目的图像->:

现在我想给下面的项目贴上标签

我希望它是这样的,可能以一种有效的方式,图像->:

尝试在同一RecycleView中添加标签和项目,标签也作为产品项目添加

公共类CustomCategoryAdapter扩展了RecyclerView.Adapter{

private List<Object> itemsData;
private Context mContext;
private final int title = 0;
private final int productItem = 1;


public CustomCategoryAdapter(Activity context, List<Object> itemsData) {
    mContext = context;
    this.itemsData = itemsData;
}

@Override
public int getItemCount() {
    return itemsData.size();
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    RecyclerView.ViewHolder viewHolder;
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    View v1;
    switch(viewType)
    {
        case title:
            v1 = inflater.inflate(R.layout.title_layout, parent, false);
            viewHolder = new TitleLayout(v1);
            return viewHolder;
        case productItem:
            v1 = inflater.inflate(R.layout.product_list_item, parent, false);
            viewHolder = new ProductListingRecyclerGridAdapter.ViewHolder(v1);
            return viewHolder;
    }
    return null;
}


@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) {
    try {
        switch(viewHolder.getItemViewType())
        {
            case title:
                TitleLayout titleLayout = (TitleLayout) viewHolder;
                titleLayout.setTitle((String)itemsData.get(position));
                break;
            case productItem:
                ProductListingRecyclerGridAdapter.ViewHolder productDetail = (ProductListingRecyclerGridAdapter.ViewHolder) viewHolder;
                productDetail.itemprice.setText(((ProductItem)itemsData.get(position)).getProductPrice());
                productDetail.txtViewTitle.setText(((ProductItem)itemsData.get(position)).getTitle());
                //productDetail.imgViewIcon.setImageUrl(((ProductItem)itemsData.get(position)).getImageUrl(),GORSingleton.getInstance().getImageLoader());
                break;
        }
        } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
public int getItemViewType(int position) {
    if (itemsData.get(position) instanceof String) {
        return title;
    } else if (itemsData.get(position) instanceof ProductItem) {
        return productItem;
    }
    return -1;
}
私有列表项数据;
私有上下文;
私有最终整数标题=0;
私有最终int productItem=1;
公共CustomCategoryAdapter(活动上下文、列表项数据){
mContext=上下文;
this.itemsData=itemsData;
}
@凌驾
public int getItemCount(){
返回itemsData.size();
}
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
RecyclerView.ViewHolder-ViewHolder;
LayoutInflater充气器=LayoutInflater.from(parent.getContext());
视图v1;
开关(视图类型)
{
案例名称:
v1=充气机。充气(R.layout.title_布局,父级,false);
viewHolder=新标题布局(v1);
返回视图持有者;
案例产品项目:
v1=充气机。充气(R.layout.product\u list\u项目,父项,false);
viewHolder=新产品列表RecyclerGridAdapter.viewHolder(v1);
返回视图持有者;
}
返回null;
}
@凌驾
public void onBindViewHolder(RecyclerView.ViewHolder-ViewHolder,最终int位置){
试一试{
开关(viewHolder.getItemViewType())
{
案例名称:
TitleLayout TitleLayout=(TitleLayout)视图持有者;
titleLayout.setTitle((字符串)itemsData.get(位置));
打破
案例产品项目:
ProductListingRecyclerGridAdapter.ViewHolder productDetail=(ProductListingRecyclerGridAdapter.ViewHolder)ViewHolder;
productDetail.itemprice.setText(((ProductItem)itemsData.get(position)).getProductPrice();
productDetail.txtViewTitle.setText(((ProductItem)itemsData.get(position)).getTitle());
//productDetail.imgViewIcon.setImageUrl(((ProductItem)itemsData.get(position)).getImageUrl(),GORSingleton.getInstance().getImageLoader());
打破
}
}捕获(例外e){
e、 printStackTrace();
}
}
@凌驾
public int getItemViewType(int位置){
if(itemsData.get(position)instanceof String){
返回标题;
}else if(itemsData.get(position)instanceof ProductItem){
退货商品;
}
返回-1;
}

}

发布适配器的代码,我们可能会帮助您修改代码,以满足您的需要。您可以在同一适配器中由不同的持有者管理不同的视图类型。我发布了它,请查看!您可以修改内容,使列表的每一行都包含一个类似网格的布局,其中包含两个可能的项。如果只有一个项目要显示,就不要用任何东西填充行中的第二个视图。发布适配器的代码,我们可能会帮助修改它以满足您的需要。您可以在同一适配器中由不同的持有者管理不同的视图类型。我发布了它,请查看!您可以修改内容,使列表的每一行都包含一个类似网格的布局,其中包含两个可能的项。如果只有一个项目要显示,不要用任何东西填充行中的第二个视图。