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
- android GridView学习笔记
- GridView学习笔记
- Android学习笔记之GridView
- Android学习笔记之GridView
- Android之 GridView学习笔记
- Android学习笔记(十一)GridView
- Android学习笔记之GridView
- Android学习笔记(8) - GridView与ImageView
- Android Widget——GridView 学习笔记
- Android 学习笔记(十三):Activity-GridView
- [转] EXTJS学习笔记:grid之gridview
- Android开发学习笔记:浅谈GridView
- Android学习笔记之GridView(2)
- Android 学习笔记(十三):Activity-GridView
- Android 学习笔记(十三):Activity-GridView
- Android 学习笔记(十三):Activity-GridView
- Android开发学习笔记:浅谈GridView
- Android开发学习笔记:浅谈GridView
- LeetCode题解:Count Primes
- POJ3254Corn Fields【状压dp】
- 几行和一千年
- C++强制类型转换操作符 dynamic_cast
- 自定义ArrayWritable
- GridView学习笔记
- 简单化——利益和快乐2
- 8+查找一个旋转数组的最小元素
- Java心得21
- C语言(7)--高精度加法、减法、乘法、今天是星期几、四位平方数、候选人选票问题
- hdu5418 BestCoder Round #52 (div.2) Victor and World ( floyd+状压dp)
- poj1990MooFest(树状数组)
- 应对非均衡数据集分类问题的八大策略
- C++类型转换