2017-10-13 43 views
0

嘗試了很多之後,我在這裏發佈我的問題,希望能得到解決方案。 我想填充一個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> 

我必須在每個位置不同的不同的項目,我該如何解決每個部分的高度的問題, 先謝謝了。

回答

1

你必須爲當前解決的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

相關問題