如何在android中以相同的布局(RecyclerView或类似的东西)添加网格和列表?
我想在android中以相同的布局(RecyclerView或类似的东西)添加网格和列表。 其中网格可以是多个产品和用于标记产品的列表。网格宽度中的2个产品。 这是我在RecyclerView中为仅限项目的图像->: 现在我想给下面的项目贴上标签 我希望它是这样的,可能以一种有效的方式,图像->: 尝试在同一RecycleView中添加标签和项目,标签也作为产品项目添加 公共类CustomCategoryAdapter扩展了RecyclerView.Adapter{如何在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
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;
}
}发布适配器的代码,我们可能会帮助您修改代码,以满足您的需要。您可以在同一适配器中由不同的持有者管理不同的视图类型。我发布了它,请查看!您可以修改内容,使列表的每一行都包含一个类似网格的布局,其中包含两个可能的项。如果只有一个项目要显示,就不要用任何东西填充行中的第二个视图。发布适配器的代码,我们可能会帮助修改它以满足您的需要。您可以在同一适配器中由不同的持有者管理不同的视图类型。我发布了它,请查看!您可以修改内容,使列表的每一行都包含一个类似网格的布局,其中包含两个可能的项。如果只有一个项目要显示,不要用任何东西填充行中的第二个视图。