GridView网格布局

一、实验目的:

掌握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;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值