无法在回收站视图内保持网格视图的大小?

问题描述:

尝试了很多之后,我在这里发布我的问题,希望能得到解决方案。 我想填充一个gridView里面recyclerview,但在每个位置,我有不同的项目在网格视图,我面临的问题,假设我有0 项目在位置0,6项目在位置1我的回收视图占用的空间每次六项,它不通过仅显示项目在0位置的两个填充, 如何实现这一点:无法在回收站视图内保持网格视图的大小?

我recyclerView适配器代码是: -

public class RecyclerViewDashItemAdapter extends RecyclerView.Adapter<RecyclerViewDashItemAdapter.ViewHolder> { 
    Context mContext; 
    WacsDashboardItemResponse wacsDashboardItemResponse; 
    GridViewItemBaseAdapter gridViewItemBaseAdapter; 

    public RecyclerViewDashItemAdapter(Context mContext, WacsDashboardItemResponse wacsDashboardItemResponse) { 
     this.mContext = mContext; 
     this.wacsDashboardItemResponse = wacsDashboardItemResponse; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_view_dash_item_adapter, parent, false); 
     ViewHolder viewHolder = new ViewHolder(v); 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 

     gridViewItemBaseAdapter = new GridViewItemBaseAdapter(mContext, 
       wacsDashboardItemResponse.subGroup.get(position).itemArray); 

     holder.gridViewDashItem.setAdapter(gridViewItemBaseAdapter); 

    } 

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

    class ViewHolder extends RecyclerView.ViewHolder { 

     GridView gridViewDashItem; 

     public ViewHolder(View itemView) { 

      super(itemView); 

      gridViewDashItem = (GridView) itemView.findViewById(R.id.gridViewDashItem); 
     } 
    } 
} 

我对recyclerView适配器XML是: -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:drawable/edit_text" 
    android:orientation="vertical"> 

    <GridView 
     android:id="@+id/gridViewDashItem" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_horizontal" 
     android:columnWidth="300dp" 
     android:horizontalSpacing="2dp" 
     android:numColumns="2" 
     android:padding="2dp" 
     android:stretchMode="columnWidth" 
     android:verticalSpacing="8dp" /> 

</LinearLayout> 

我的GridView的代码是: -

public class GridViewItemBaseAdapter extends BaseAdapter { 
    Context mContext; 
    List<WacsDashboardItemResponse.SubGroup.ItemArray> itemArray; 

    public GridViewItemBaseAdapter(Context mContext, List<WacsDashboardItemResponse.SubGroup.ItemArray> itemArray) { 
     this.mContext = mContext; 
     this.itemArray = itemArray; 
    } 

    @Override 
    public int getCount() { 

     return itemArray.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup viewGroup) { 
     LayoutInflater inflater = (LayoutInflater) mContext 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View gridView = null; 

     if (convertView == null) { 

      gridView = new View(mContext); 
      gridView = inflater.inflate(R.layout.grid_view_dash_item, null); 
      TextView itemName = (TextView) gridView.findViewById(R.id.itemName); 
      itemName.setText(itemArray.get(position).itmeDesc); 


     } 
     return gridView; 
    } 
} 

我对网格视图XML是: -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center_vertical" 
    android:orientation="horizontal"> 

    <com.orbitsysindia.repairordermanagement.servicereception.util.custom.TextViewMedium 
     android:id="@+id/itemName" 
     style="@style/textColorBlack_14sp" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:text="Check Engine" /> 

    <ImageView 
     android:layout_width="45dp" 
     android:layout_height="45dp" 
     android:layout_marginEnd="10dp" 
     android:src="@drawable/wiperblade" /> 

    <Switch 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:theme="@style/SwitchTheme" /> 

</LinearLayout> 

我必须在每个位置不同的不同的项目,我该如何解决每个部分的高度的问题, 先谢谢了。

你必须为当前解决的GridView项的高度是matchparent所以它采取最大高度

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="320dp" 
android:gravity="center_vertical" 
android:orientation="horizontal"> 

<com.orbitsysindia.repairordermanagement.servicereception.util.custom.TextViewMedium 
    android:id="@+id/itemName" 
    style="@style/textColorBlack_14sp" 
    android:layout_width="100dp" 
    android:layout_height="wrap_content" 
    android:text="Check Engine" /> 

<ImageView 
    android:layout_width="45dp" 
    android:layout_height="45dp" 
    android:layout_marginEnd="10dp" 
    android:src="@drawable/wiperblade" /> 

<Switch 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:theme="@style/SwitchTheme" /> 

+0

我说我所有的项目都出现了正常,我有不同的项目不同的计数位置设置在位置0两个位置1六个,但我的回收器视图在六个部分这样取六个部分的高度它显示两个项目和另一个四个项目的空间空白然后它到第一个位置 – Champandorid

+0

可以请您附上一个屏幕拍摄为了更好的理解 – yash786

+0

嘿@yash786请检查附件ent以上 – Champandorid