一、实验目的: 掌握GridView网格视图的功能,并通过网格来显示指定的内容。 |
1.定义数据类 2.定义网格布局 3.定义Adapter类 4.设置数据 |
三、实验过程与结论: 1.定义数据类,在项目中添加名为“Jiugong”的数据类,该数据类中,主要包含了头像以及姓名的属性;代码如图1所示: 图1 数据类:Jiugong 2.定义网格布局,在项目中添加线性布局,用来定义网格的布局;代码如图2所示: 图2 线性布局 3.定义Adapter类,在项目中添加BaseAdapter类的子类CustomAdapter,该类的构造方法,如图3所示: 图3 Adapter类构造方法 4. 其中,mData是List类型,该List中的元素是“数据类Jiugong”中定义的对象。之后,定义CustomAdapter类的getCount()、getItem()和getItemId()三个成员方法,代码如图4所示: 图4 三个成员方法 5. 最后,在getView()方法中设置GridView中每个网格显示的信息,代码如图5所示。 图5 getView()方法 6.设置数据,在MainActivity主程序中设置显示的数据,代码如图6所示: 图6 设置数据 7.程序运行结果,如图7所示:
图7 程序运行结果 |
这次实验的内容是运用GridView实现一个网格布局,实验的原理和ListView线性布局的原理大致相似,通过这次实验我掌握了GridView的原理。
部分源码:
//Jiugong.java 类
package com.example.gridview0411;
public class Jiugong {
private int name;
private String number;
public Jiugong(int name,String number)
{
this.name=name;
this.number=number;
}
public int getName()
{
return name;
}
public String getNumber()
{
return number;
}
}
//线性布局
<ImageView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:id="@+id/xianxing_main_IV1"
android:gravity="center"
android:layout_above="@id/xianxing_main_TV1"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/xianxing_main_TV1"
android:textSize="15sp"
android:textColor="#f05f00"
android:gravity="center"/>
//CustomAdapter
public class CustomAdapter extends BaseAdapter
{
private LayoutInflater mInflater;
private List<Jiugong> mData = new ArrayList<Jiugong>();
public CustomAdapter (Context context, List<Jiugong> list)
{
mInflater = LayoutInflater.from(context);
mData.addAll(list);
}
@Override
public int getCount() {
if (null == mData || mData.isEmpty())
{
return 0;
}
return mData.size();
}
public Object getItem(int position){
if(null==mData||position>mData.size()-1)
{
return null;
}
return mData.get(position);
}
public long getItemId(int position)
{
return 0;
}
public View getView(int position,View converView,ViewGroup parent)
{
converView = mInflater.inflate(R.layout.xianxing_buju,null) ;
ImageView touxiang = (ImageView) converView.findViewById(R.id.xianxing_main_IV1);
TextView txtvew =(TextView)converView.findViewById(R.id.xianxing_main_TV1);
Jiugong value = (Jiugong)mData.get(position);
if (null!=value)
{
touxiang.setImageResource(value.getName());
txtvew.setText(value.getNumber());
}
return converView;
}
}
//MainActivity 主程序,设置数据
private List<Jiugong> getData()
{
List<Jiugong> data =new ArrayList<Jiugong>();
data.add(new Jiugong(R.mipmap.huojian,"休斯顿火箭"));
data.add(new Jiugong(R.mipmap.lakers,"洛杉矶湖人"));
data.add(new Jiugong(R.mipmap.yongshi,"金州勇士"));
data.add(new Jiugong(R.mipmap.jazz,"犹他州爵士"));
data.add(new Jiugong(R.mipmap.maci,"圣安东尼奥马刺"));
data.add(new Jiugong(R.mipmap.kings,"萨拉克门托国王"));
data.add(new Jiugong(R.mipmap.kaituozhe,"波特兰开拓者"));
data.add(new Jiugong(R.mipmap.suns,"菲尼克斯太阳"));
data.add(new Jiugong(R.mipmap.shenlinlang,"明尼苏达森林狼"));
data.add(new Jiugong(R.mipmap.huixiong,"孟菲斯灰熊"));
data.add(new Jiugong(R.mipmap.juejin,"丹佛掘金"));
data.add(new Jiugong(R.mipmap.huosai,"底特律活塞"));
data.add(new Jiugong(R.mipmap.kuaichuan,"洛杉矶快船"));
data.add(new Jiugong(R.mipmap.laoying,"亚特兰大老鹰"));
data.add(new Jiugong(R.mipmap.kaierteren,"波士顿凯尔特人"));
data.add(new Jiugong(R.mipmap.bulls,"芝加哥公牛"));
data.add(new Jiugong(R.mipmap.qishi,"克利夫兰骑士"));
data.add(new Jiugong(R.mipmap.duxingxia,"达拉斯独行侠"));
data.add(new Jiugong(R.mipmap.buxingzhe,"印第安纳步行者"));
data.add(new Jiugong(R.mipmap.heat,"迈阿密热火"));
data.add(new Jiugong(R.mipmap.xionglu,"密尔沃基雄鹿"));
data.add(new Jiugong(R.mipmap.feicheng,"费城76人"));
data.add(new Jiugong(R.mipmap.nets,"纽约布鲁克林篮网"));
data.add(new Jiugong(R.mipmap.nikes,"纽约尼克斯"));
data.add(new Jiugong(R.mipmap.aolanduo,"奥兰多魔术"));
data.add(new Jiugong(R.mipmap.duolunduo,"多伦多猛龙"));
data.add(new Jiugong(R.mipmap.qicai,"华盛顿奇才"));
data.add(new Jiugong(R.mipmap.tihu,"新奥尔良鹈鹕"));
data.add(new Jiugong(R.mipmap.leiting,"俄克拉荷马城雷霆"));
data.add(new Jiugong(R.mipmap.huangfeng,"夏洛特黄蜂"));
return data;
}