GridView的使用
来源:互联网 发布:乐贝网络校园招聘 编辑:程序博客网 时间:2024/06/09 17:10
GridView的使用
- 当我们在安卓开发时想要实现上图所示的矩阵式的按钮的效果时,就要考虑使用GridView控件了。
代码详解
<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" > <GridView android:id="@+id/gv_type" android:layout_width="match_parent" android:layout_height="wrap_content" android:numColumns="4" android:horizontalSpacing="1dp" android:verticalSpacing="2dp" > </GridView></RelativeLayout>
- 这是我们的activity_main布局,使用了一个GridView控件。其中,android:horizontalSpacing=”1dp” 表示水平间距;android:verticalSpacing=”2dp” 表示垂直间距;android:numColumns=”4” 表示有gridview里的item有4列。
- 你可能会想到为什么没有设置行数呢?实际上系统会根据你添加的item个数自动添加行数。如按照这里的设置,总共8个item就有2行,9个item就有3行了。
public class MainActivity extends Activity { private int icon[] = { R.drawable.ic_category_0, R.drawable.ic_category_1, R.drawable.ic_category_2, R.drawable.ic_category_3, R.drawable.ic_category_4, R.drawable.ic_category_5, R.drawable.ic_category_6, R.drawable.ic_category_7 }; private String iconName[] = { "美食", "电影", "酒店", "KTV", "健康丽人", "休闲娱乐", "今日新单", "全部分类" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GridView gvType = (GridView) findViewById(R.id.gv_type); gvType.setAdapter(new MyGrideViewAdapter()); gvType.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, iconName[position], Toast.LENGTH_SHORT).show(); } }); } class MyGrideViewAdapter extends BaseAdapter { public ArrayList<Picture> picList; public MyGrideViewAdapter(){ picList = new ArrayList<Picture>(); for(int i=0; i<icon.length; i++){ Picture pic = new Picture(icon[i], iconName[i]); picList.add(pic); } } @Override public int getCount() { if(picList != null) return picList.size(); else return 0; } @Override public Picture getItem(int position) { return picList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if(convertView == null){ convertView = View.inflate(getApplicationContext(), R.layout.item_gv, null); holder = new ViewHolder(); holder.ivItem = (ImageView) convertView.findViewById(R.id.iv_item); holder.tvItem = (TextView) convertView.findViewById(R.id.tv_item); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } holder.ivItem.setImageResource(getItem(position).getPictureId()); holder.tvItem.setText(getItem(position).getPictureName()); return convertView; } } static class ViewHolder{ public ImageView ivItem; public TextView tvItem; }}
- 在MainActivity我们先设置了两个数组用来填充GridView的item的图片及其文字描述。
- 在为gridView设置适配器时,自然需要一个集合去存放item所需的图片及其文字描述。这里我们做了一个javabean对象(下面会给出代码)Picture来封装这两个属性。然后就向一个arraylist里添加这个picture对象即可。
- MyGrideViewAdapter继承了BaseAdapter仍然是一个标准的适配器写法。需要注意的是我们重写了这个适配器的构造方法,以便在这里初始化我们的集合(适配器中填充item所需的集合对象经常会在适配器的构造里去完成)。
public class Picture { private int pictureId; private String pictureName; /** * 构造 * @param pictureId 图片资源id * @param pictureName 图片说明文字 */ public Picture(int pictureId, String pictureName) { super(); this.pictureId = pictureId; this.pictureName = pictureName; } public int getPictureId() { return pictureId; } public void setPictureId(int pictureId) { this.pictureId = pictureId; } public String getPictureName() { return pictureName; } public void setPictureName(String pictureName) { this.pictureName = pictureName; }}
- 这里就是Picture这个javabean了。
1 0
- GridView的使用
- GridView的使用
- gridview的详细使用
- GridView的使用
- GridView的使用技巧.
- 学习gridview的使用
- GridView表头的使用
- GridView的使用
- Gridview的精彩使用
- GridView控件的使用
- GridView控件的使用
- GridView 的使用
- gridview的使用入门
- gridview的使用
- Android GridView的使用
- GridView的使用
- Android的GridView使用
- Android GridView的使用
- SpringMvc中@RequestMapping详解
- Eclipse无法启动报An internal error occurred during: "reload maven project". java.lang.NullPointerExceptio
- github
- Eclipse优化设置技巧
- AJDK 8.0.0 Release Notes
- GridView的使用
- git删除中间某个commit
- 快过年了正好。。。
- centos 7 禁用防火墙
- android studio 新建modle和删除modle
- Linux下安装jdk
- ConcurrentModificationException问题
- iOS,如何模仿一个App
- ReactNative开发环境搭建-真正的for windows