自定义 GridView 作为 header Viewpager 片段中的自定义 Listview Android

Custom GridView as a header of Custom Listview in Viewpager Fragment in Android

我正在尝试在自定义列表视图的顶部显示带有 2 列的自定义网格视图 header

我可以看到自定义列表视图,但看不到列表视图顶部的网格视图。

只是在 Listview 上面的 Gridview 显示空白 space。

下面是代码:

1) Fragmentpage.java

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    view=inflater.inflate(R.layout.fragmentpage_layout, null,false);

    listView=(ListView)view.findViewById(R.id.listview);

    View header=inflater.inflate(R.layout.gridview_layout,null,false);

    gridView=(GridView)header.findViewById(R.id.gridview);

    gridViewAdapter=new CustomGridViewAdapter(getActivity(),images,toptexts, bottomtexts);
    listViewAdapter=new CustomListViewAdapter(getActivity(),images,toptexts,bottomtexts);

    gridView.setAdapter(gridViewAdapter);
    listView.addHeaderView(header);
    listView.setAdapter(listViewAdapter);

   return view;
}

2) CustomGridViewAdapter.java

public class CustomGridViewAdapter extends ArrayAdapter<String> {

LayoutInflater inflater;
Context context;
ArrayList<Integer> images;
ArrayList<String> fronts,seconds;


CustomGridViewAdapter(Context context,ArrayList<Integer> images,ArrayList<String> fronts,ArrayList<String> seconds){
    super(context,-1,fronts);
    this.context=context;
    this.images=images;
    this.fronts=fronts;
    this.seconds=seconds;
    inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}


static class ViewHolder{
    ImageView imageView;
    TextView toptextView,bottomtextView;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view=convertView;
    ViewHolder holder;
    if(convertView==null){
        holder=new ViewHolder();
        view=inflater.inflate(R.layout.featured_gridlayout,null,false);
        holder.imageView=(ImageView)view.findViewById(R.id.gridImage);
        holder.toptextView=(TextView)view.findViewById(R.id.toptext);
        holder.bottomtextView=(TextView)view.findViewById(R.id.bottomtext);
        view.setTag(holder);
    }else{
        holder=(ViewHolder) view.getTag();
    }

       holder.imageView.setImageResource(images.get(position));
       holder.toptextView.setText(fronts.get(position));
       holder.bottomtextView.setText(seconds.get(position));

    return view;
}

}

我找到了罪魁祸首,它在我的 xml :

android:stretchMode="spacingWidth";

改为

android:stretchMode="columnWidth";

而且我可以看到我的 gridview 感谢上帝 _/\ _