我正在尝试创建一个我自己的水平可滚动GridView(不想使用那里的任何东西,因为我想玩这个概念并且我自己更好地理解它)但是由于某种原因没有网格项目出现在屏幕上。
GridLayout是ListItem的一部分,我在那里实例化它。 (如果我使用普通的GridLayout,那么未在Scroll View中添加数据将显示)
这是我的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>
这是我的适配器类:
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);
答案 0 :(得分:0)
GridView不会在HorizontalScrollView中滚动。您需要在布局中使用RecyclerView而不是GridView(并且可能扩展RecyclerView.Adapter)
请参阅文档:https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html