1.4 设置数据
在MainActivity.java中设置要显示的数据。首先,自定义一个设置数据的方法getData(),代码如下所示。
private List<Player> getData()
{
List<Player> data = new ArrayList<Player>();
data.add(new Player("梅西",R.mipmap.meixi));
data.add(new Player("C罗",R.mipmap.cluo));
data.add(new Player("本泽马",R.mipmap.benzema));
data.add(new Player("武磊",R.mipmap.wulei));
data.add(new Player("伊布",R.mipmap.yibu));
data.add(new Player("因西涅",R.mipmap.yinxinie));
data.add(new Player("哲科",R.mipmap.zheke));
data.add(new Player("姆巴佩",R.mipmap.mubapei));
return data;
}
其中,data是List<Player>的对象,通过add()方法将要显示的数据添加到List中。类似R.mipmap.meixi格式的值是导入球员图片的ID。
接下来在OnCreate()方法中有如下代码:
gv = (GridView)findViewById(R.id.activity_main_gv);
CustomAdapter adapter = new CustomAdapter(this,getData());
gv.setAdapter(adapter);
其中,gv是GridView类的对象,activity_main_gv是主界面中GridView控件的ID,通过findViewById()方法将gv与GridView控件关联;之后定义在“1.3定义Adapter类”中提到的自定义Adapter类CustomAdapter的对象,最后通过setAdapter()方法设置GridView控件的适配器,在GridView中显示图1所示的指定数据。
2 GridView控件的属性
2.1 numColumns
GridView控件的numColumns指定了控件的列数,图1中显示的GridView的效果,该控件具有如下属性
android:numColumns="3"
还可以将numColumns的值设置为“auto_fit”,该值表示根据屏幕大小自动设置列数。
2.2 verticalSpacing和horizontalSpacing
verticalSpacing属性指定了GridView控件两行之间的垂直间距,即行间距;horizontalSpacing属性指定了GridView控件两列之间的水平间距,即列间距。设置这两个属性的代码如下所示。
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
2.3 columnWidth
columnWidth属性指定了GridView控件每一列的宽度。
2.4 strechMode
strechMode属性指定了缩放模式,即指定了GridView的列适应空白的方式。例如模拟器采用的分辨率是800×480,GridView的numColumns值设置为“4”,columnWidth的值设置为100px,horizontalSpacing属性设置为10px。此时4列占的宽度是4×100=400px,4列数据有3个horizontalSpacing,占的宽度是3×10=30px。此时,屏幕的宽度还剩480-(400+30)=50px的空白。strechMode属性就是指定了屏幕宽度剩下的空白如何分配。
当strechMode属性的值是“columnWidth”时,表示将剩下的空白分配给每列;strechMode属性的值是“spacingWidth”时,表示将剩下的空白分配给列与列的间距,此时是不平均分配;strechMode属性的值是“columnWidthUniform”时,表示将剩下的空白分配给每列,此时的分配是平均分配。