GridView学习笔记

来源:互联网 发布:linux下的socket编程 编辑:程序博客网 时间:2024/06/05 05:35

自我对GridView的认知:

GridView就好像是我们在查看图片的时候会显示多少行多少列的图片,可以对比记忆Java中的的GridLayout。我暂且称其为网格控件。

mygridview项目列表如下图:下面会详细附上各部分的代码。依然按照先layout后Java最后manifests的顺序。

这里写图片描述

项目测试结果如下图:
这里写图片描述

activity_main.xml中的代码:

说明,使用自定义的相对布局,里面加上一个GridView控件,设置列数为3列

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity">    <GridView        android:id="@+id/gridView_id"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:numColumns="3"        ></GridView></RelativeLayout>

gridviewtest.xml代码

说明:最外层采用线性布局,有一个10dp的padding(填充),里面也采用线性布局添加一个ImageView、和TextView

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:padding="10dp"    android:orientation="vertical" >    <LinearLayout        android:id="@+id/linearlayout_id"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="vertical"        >         <ImageView        android:id="@+id/image_grideview"        android:layout_width="80dp"        android:layout_height="80dp"        />    <TextView         android:id="@+id/text_fruitname"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="水果名字"        android:layout_gravity="center_horizontal"        />    </LinearLayout></LinearLayout>

MyGridViewAdapter.java

:说明:MyGridViewAdapter这个类继承自BaseAdapter,实现了BaseAdapter类中的四个抽象的方法,但最重要的是getView这个方法。

package com.example.administrator.mygridview.adapter;import java.util.List;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.example.administrator.mygridview.R;import com.example.administrator.mygridview.model.Fruit;public class MyGridViewAdapter extends BaseAdapter{    private List<Fruit> mFruit;    private LayoutInflater inflater;    public MyGridViewAdapter(List<Fruit> mFruit,LayoutInflater inflater)    {            this.mFruit=mFruit;            this.inflater=inflater;    }    @Override    public int getCount() {        // TODO Auto-generated method stub        return mFruit.size();    }    @Override    public Object getItem(int position) {        return position;    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder viewHolder=null;        if(convertView==null)        {            convertView=inflater.inflate(R.layout.grideviewtest, null);            viewHolder=new ViewHolder();            viewHolder.imageView = (ImageView) convertView.findViewById(R.id.image_grideview);            viewHolder.textView=(TextView) convertView.findViewById(R.id.text_fruitname);            convertView.setTag(viewHolder);        }else        {            viewHolder=(ViewHolder)convertView.getTag();        }        Fruit fruit=mFruit.get(position);        viewHolder.imageView.setImageResource(fruit.getImg());        viewHolder.textView.setText(fruit.getName());        return convertView;    }        class   ViewHolder        {            ImageView imageView;            TextView textView;        }}

:Fruit.java代码

package com.example.administrator.mygridview.model;public class Fruit {    private String name;    private int img;    public Fruit(String name,int img)    {        this.name = name;        this.img = img;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getImg() {        return img;    }    public void setImg(int img) {        this.img = img;    }}

MainActivity.java代码

说明:通过ininFruit();方法来得到数据,通过inflater=getLayoutInflater();来得到inflater,通过MyGridViewAdapter的构造器得到一个adapter。通过griaView.setAdapter(adapter)来加载这个适配器.

package com.example.administrator.mygridview;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.view.LayoutInflater;import android.view.Menu;import android.widget.GridView;import com.example.administrator.mygridview.adapter.MyGridViewAdapter;import com.example.administrator.mygridview.model.Fruit;public class MainActivity extends Activity {    private GridView griaView;    private List<Fruit> mFruit;    private LayoutInflater inflater;    private MyGridViewAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        griaView=(GridView) findViewById(R.id.gridView_id);        inflater=getLayoutInflater();        ininFruit();        adapter=new MyGridViewAdapter(mFruit, inflater);        griaView.setAdapter(adapter);    }    public List<Fruit> ininFruit()    {        mFruit = new ArrayList<Fruit>();        for (int i = 0; i < 5; i++) {            Fruit fish = new Fruit("鱼", R.mipmap.fish);            Fruit jellyfish = new Fruit("jelly鱼", R.mipmap.jelly_fish);            Fruit kbugbuster = new Fruit("kbugbuster", R.mipmap.kbugbuster);            Fruit penguin = new Fruit("penguin", R.mipmap.penguin);            Fruit pig = new Fruit("penguin", R.mipmap.penguin);            Fruit poweranimal = new Fruit("poweranimal", R.mipmap.power_animal);            mFruit.add(fish);            mFruit.add(jellyfish);            mFruit.add(kbugbuster);            mFruit.add(penguin);            mFruit.add(pig);            mFruit.add(poweranimal);        }        return mFruit;    }}

AndroidManifest.xml代码:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.administrator.mygridview" >    <application        android:allowBackup="true"        android:icon="@mipmap/fish"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

小结:

学习GridView,其基本思想都是一样的,想法设法得到一个adapter,然后去加载这个适配器。。

0 0
原创粉丝点击