Android 水平滚动网格视图

Android 水平滚动网格视图,android,gridview,horizontalscrollview,Android,Gridview,Horizontalscrollview,我正在尝试创建一个我自己的水平可滚动网格视图(不想使用任何东西,因为我想自己玩这个概念并更好地理解它),但由于某些原因,屏幕上没有显示网格项 GridLayout是ListItem的一部分,我在那里实例化了它。(如果我使用的是普通的GridLayout,而不是添加到滚动视图中,数据将显示出来) 这是我的XML文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schem

我正在尝试创建一个我自己的水平可滚动网格视图(不想使用任何东西,因为我想自己玩这个概念并更好地理解它),但由于某些原因,屏幕上没有显示网格项

GridLayout是ListItem的一部分,我在那里实例化了它。(如果我使用的是普通的GridLayout,而不是添加到滚动视图中,数据将显示出来)

这是我的XML文件:

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

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="180dp"
    android:layout_centerVertical="true"
    android:layout_alignParentStart="true">
    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/horizontalScrollView">

        <GridView
           android:id="@+id/gridview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:columnWidth="100dp"
         />

    </HorizontalScrollView>
</FrameLayout>

GridView不会在HorizontalScrollView内滚动。您需要在布局中使用RecyclerView而不是GridView(可能还需要扩展RecyclerView.Adapter)

见文件:

public class RelatedCarsAdapter extends BaseAdapter {

private Context mContext;
private ArrayList<Cars> cars;

public RelatedCarsAdapter(Context context, ArrayList< Cars > cars) {
    this.mContext = context;
    this.cars = cars;
}

@Override
public int getCount() {
    return cars.size();
}

@Override
public Object getItem(int i) {
    return cars.get(i);
}

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

@Override
public View getView(int position, View view, ViewGroup viewGroup) {
    TextView dummyTextView = new TextView(mContext);
    dummyTextView.setText(String.valueOf(position));
    return dummyTextView;
    }
}
GridView gridView = (GridView) rowView.findViewById(R.id.gridview);
            RelatedCarsAdapter relatedCarsAdapter = new RelatedCarsAdapter(mContext, cars);
            gridView.setNumColumns(cars.size());
            gridView.setAdapter(relatedCarsAdapter);