Android之-----GridView使用的方法总结
GridView和ListView是Android里面比较常用的多控件布局,其使用方法上篇博客写过的ListViewf非常相似都要用到适配器来帮助创建界面。这里比较经常用适配器,那么下一篇博客就有必要来探究一下适配器的作用了。
这里我通过两种方式实现GridView布局,一种是比较简单的SimpleAdapter适配器来完成。另一种是继承BaseAdapter来自定义适配器。个人感觉第一中方法更加方便,但是第二种方法我们却能够更深入的了解到它进行数据页向面传输的机制。 SimpleAdapter方式实现:
activity_main.xml文件:
<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/mineMainview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="5dp" android:columnWidth="90dp" android:gravity="center" android:horizontalSpacing="5dp" android:numColumns="2" android:stretchMode="columnWidth" android:verticalSpacing="20dp" > </GridView> </RelativeLayout>
上面GridView的方法注解说明:
<!-- GridView的宽度和高度 //每一列的宽度 android:columnWidth="90dp" //每一行能显示出几列,auto_fit自动设置,也可以指定列数 android:numColumns="auto_fit" //水平和竖直方向上的间距 android:verticalSpacing="10dp" android:horizontalSpacing="10dp" //图片的模式 android:stretchMode="columnWidth" //对齐方式 android:gravity="center"/>-->
picture_item.xml文件:
<?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:orientation="vertical" > <ImageView android:id="@+id/image" android:layout_width="120dp" android:layout_height="120dp" android:layout_gravity="center" android:padding="4dp" android:scaleType="fitXY" /> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center_horizontal" /> </LinearLayout>
MainActivity.java文件
package com.example.gridview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.GridView; import android.widget.SimpleAdapter; public class MainActivity extends Activity { private GridView gridView; private String[] from = { "image", "title" }; private int[] to = { R.id.image, R.id.title }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gridView = (GridView) findViewById(R.id.mineMainview); SimpleAdapter pictureAdapter = new SimpleAdapter(this, getList(), R.layout.picture_item, from, to); gridView.setAdapter(pictureAdapter); } public List<Map<String, Object>> getList() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = null; String[] titles = new String[] { "本地音乐", "我的最爱", "我的下载", "我的歌单", "最近播放" }; Integer[] images = { R.drawable.local, R.drawable.love, R.drawable.down, R.drawable.build, R.drawable.cloudly }; for (int i = 0; i < images.length; i++) { map = new HashMap<String, Object>(); map.put("image", images[i]); map.put("title", titles[i]); list.add(map); } return list; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
以上方法是使用SimpleAdapter适配器的方法的代码示例。
下面是自定义适配器的代码,虽然稍微麻烦了一点但是还是比较值得学习的。
activity_main.xml文件和picture_item.xml文件和上面的一样下面是java的代码。
MainActivity.java文件
package com.example.gridview; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.GridView; public class MainActivity extends Activity { private GridView gridView; private String[] titles=new String[]{ "本地音乐","我的最爱","我的下载","我的歌单","最近播放" }; private Integer[] images={ R.drawable.local,R.drawable.love, R.drawable.down,R.drawable.build, R.drawable.cloudly }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gridView=(GridView) findViewById(R.id.mineMainview); PictureAdapter pictureAdapter=new PictureAdapter(titles, images, this); gridView.setAdapter(pictureAdapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
自定义适配器PictureAdapter.java文件
package com.example.gridview; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; public class PictureAdapter extends BaseAdapter { private Context context; private List<Picture> pictures=new ArrayList<Picture>(); public PictureAdapter(String[] titles, Integer[] images, Context context) { super(); this.context = context; for (int i = 0; i < images.length; i++) { Picture picture = new Picture(titles[i], images[i]); pictures.add(picture); } } @Override public int getCount() { if (null != pictures) { return pictures.size(); } else { return 0; } } @Override public Object getItem(int position) { return pictures.get(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) { viewHolder = new ViewHolder(); // 获得容器 convertView = LayoutInflater.from(this.context).inflate(R.layout.picture_item, null); // 初始化组件 viewHolder.image = (ImageView) convertView.findViewById(R.id.image); viewHolder.title = (TextView) convertView.findViewById(R.id.title); // 给converHolder附加一个对象 convertView.setTag(viewHolder); } else { // 取得converHolder附加的对象 viewHolder = (ViewHolder) convertView.getTag(); } // 给组件设置资源 Picture picture = pictures.get(position); viewHolder.image.setImageResource(picture.getImageId()); viewHolder.title.setText(picture.getTitle()); return convertView; } class ViewHolder { public TextView title; public ImageView image; } class Picture { private String title; private int imageId; public Picture(String title, Integer imageId) { this.imageId = imageId; this.title = title; } public String getTitle() { return title; } public int getImageId() { return imageId; } } }
下面是两种方式程序运行的效果图,是一样的:
相关推荐
在Android开发中,GridView是一种常用的布局管理器,它允许我们以网格的形式展示数据集,通常用于创建类似照片墙、应用列表等界面。本篇文章将深入探讨如何在Android中实现一个可刷新的GridView,以提高用户体验并...
在Android开发中,GridView是一种常见的布局管理器,用于展示数据集,通常以网格形式排列。在数据量较大或者需要分页显示时,GridView配合Adapter能够高效地处理数据。本篇文章将深入探讨“GridView系列---GridView...
1. Android GridView的基本使用,包括Adapter的实现和数据绑定。 2. 图片的加载策略,如异步加载和缓存。 3. GridView中的点击事件处理和图片放大效果实现。 4. 自定义适配器的设计和使用。 5. UI布局的优化,如设置...
这篇文档将深入讲解GridView的使用方法,包括基本配置、数据绑定、自定义适配器、事件处理等方面。 一、GridView的基本使用 1. 布局文件配置:在XML布局文件中,我们需要添加GridView标签,并设置其属性。例如,`...
Android-PullToRefresh-master的强大之处在于其对多种布局类型的广泛支持,包括LinearLayout、RelativeLayout、GridView等。这意味着开发者可以将下拉刷新功能轻松地应用于任何需要动态加载数据的视图。此外,对于...
它提供了丰富的动画效果,支持ListView、GridView、RecyclerView等多种列表视图,同时兼容Android的各个版本,使得开发者能够轻松实现各种自定义的下拉刷新效果。 首先,我们来看下如何将该框架导入到Android ...
总结起来,"Android GridView分组带下拉刷新"是一个综合性的课题,涉及到Android的基础组件使用、自定义适配器、数据绑定、事件处理以及性能优化等多个方面。开发者需要对Android系统有深入理解,并熟练掌握UI设计和...
### Android GridView 实现上图下文布局的知识点详解 #### 一、理解GridView 在Android开发中,`GridView`是一种常用的视图组件,用于展示列表形式的数据,特别适合用来显示等宽等高的图像集合,例如相册应用中的...
在Android中,我们可以通过调用`GridView.addFooterView(View view)`方法来添加FooterView。FooterView就像GridView中的一个额外的项,但并不包含在数据集中。它通常在数据集的最后一项之后显示。以下是一个简单的...
总结起来,"android GridView数据库开发案例"涵盖了以下几个核心知识点: 1. GridView布局控件的使用,包括设置列数、数据绑定。 2. Android数据库开发,包括SQLiteOpenHelper的使用,创建和升级数据库。 3. ...
在这个"Android GridView使用示例"中,我们将深入探讨如何在Android应用程序中有效地使用GridView。 首先,我们需要在XML布局文件中声明GridView。一个基本的GridView声明可能如下所示: ```xml <GridView ...
在Android开发中,异步加载网络图片是一项常见的需求,特别是在数据密集型的界面如GridView中。这个Demo展示了如何实现这一功能,同时支持用户点击图片查看大图。以下将详细讲解这个Demo涉及的关键知识点。 首先,...
总结来说,实现“android gridview 九宫格 动态添加信息”的关键在于:正确配置GridView的XML属性,创建自定义适配器以显示图像和文字,以及在运行时动态更新数据源并通知适配器。通过这种方式,我们可以创建出具有...
总结来说,AndroidSwipeLayout是一个强大且易用的滑动删除解决方案,它的出现使得Android应用在处理数据列表时能够提供更丰富的交互方式,提升了用户体验。开发者只需稍加学习,就能将这一功能巧妙地融入到自己的...
总结来说,实现"android GridView长按拖动,删除"的功能,需要掌握以下知识点: 1. GridView的基础知识和使用 2. 长按监听器(OnLongClickListener) 3. 开始拖动操作(startDrag()) 4. DragShadowBuilder和...
总结,`Android-ViewPagerIndicator-master`项目为开发者提供了丰富的示例,帮助理解和掌握`ViewPager`和`ViewPagerIndicator`的使用技巧,通过这些实例,我们可以学习如何在Android应用中创建高效、优雅的页面切换...
在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。当我们想要在GridView中实现每个Item(单元格)的放大缩小效果时,通常涉及到自定义Adapter、处理点击事件以及调整视图大小等多个...
在Android应用开发中,ActivityGroup、GridView和ViewFlipper是三个关键组件,它们共同作用可以构建出具有选项卡切换功能的用户界面。本教程将详细解释这三个组件的工作原理及其在实际项目中的应用。 首先,...
总结起来,"Android GridView显示系统安装的应用程序"涉及到的知识点包括:GridView的使用、PackageManager服务的使用来获取应用信息、自定义Adapter的实现以及数据绑定。这些知识点都是Android开发中的基础内容,...
总结来说,Android的GridView是通过适配器机制来展示数据的网格布局,开发者需要提供数据集、定义视图以及处理用户交互。在实际开发中,根据需求可以进行更多的定制和优化,比如添加动画效果、自定义布局等。这个...