GridView的功能和用法

来源:互联网 发布:xml与java 编辑:程序博客网 时间:2024/04/30 10:51

在我看来GridView的功能似乎跟ListView的功能相似,同样作为android上的布局控件,GridView被称为网格视图,因为用它来做网格状的布局是非常方便的,比如说九宫格,

先来看看下面的代码:

GridView gridview ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_main);View view = View.inflate(this, R.layout.activity_main, null);setContentView(view);gridview = (GridView) findViewById(R.id.GridView1);gridview.setAdapter(new MyAdapter(this));}class MyAdapter extends BaseAdapter{private Context context;private Integer [] imgs = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};public MyAdapter(Context context) {this.context = context;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn imgs.length;}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic View getView(int arg0, View arg1, ViewGroup arg2) {ImageView imageView;if(arg1 == null){imageView = new ImageView(context);imageView.setLayoutParams(new GridView.LayoutParams(75,75));imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);imageView.setPadding(8, 8, 8, 8);}else{imageView = (ImageView) arg1;}imageView.setImageResource(imgs[arg0]);return imageView;}}

有没有觉得GridView的使用跟ListView有点相似呢?

都是用适配器把要布局的内容放到控件中。


GridView的用法有很多种,上面介绍的只是最为简单的一种。


我们还可以向下面一样写代码:

private GridView gridview;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);List<Map<String,Object>> items = new ArrayList<Map<String,Object>>();for(int i = 0; i < 9;i++){Map<String, Object> item = new HashMap<String, Object>();item.put("image", R.drawable.ic_launcher);items.add(item);}SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.gridview, new String []{"image"},new int []{R.id.image});gridview = (GridView) findViewById(R.id.GridView1);gridview.setAdapter(adapter);}

这两种方法都是达到了同样的效果,但是你们有没有发现,第二种方法其实比第一种方法灵活得多呢。比如我稍微在适配器那里改一下代码:

SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.gridview, new String []{"image","text"},new int []{R.id.image,R.id.text});

然后在List也加上以下代码:

item.put("image", R.drawable.ic_launcher);item.put("text", "pic" + i);items.add(item);

我们将会看到图片下面会多了文字描述。



0 0
原创粉丝点击