GridView之BaseAdapter的用法简单案例(二)【子元素item的高度暂时不知道控制】
2016-04-11 15:06
330 查看
一个简单的GridView来预览选择 Imageview来显示的案例
效果如下,有一个问题暂时没有解决就是GridView中 子元素item的高度控制暂时不知道 所以效果很差,这里只是简单的介绍用法。所以暂时不深究。
首先我们将上面需要的布局定义一个
然后是代码实现部分,
效果如下,有一个问题暂时没有解决就是GridView中 子元素item的高度控制暂时不知道 所以效果很差,这里只是简单的介绍用法。所以暂时不深究。
首先我们将上面需要的布局定义一个
<LinearLayout 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:orientation="vertical" tools:context="${relativePackage}.${activityClass}" > <ImageView android:id="@+id/image" android:layout_width="240dp" android:layout_height="240dp" android:layout_gravity="center"/> <GridView android:id="@+id/grid01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numColumns="4" android:horizontalSpacing="1pt" android:verticalSpacing="1pt" android:gravity="center"></GridView> </LinearLayout>
然后是代码实现部分,
package com.example.baseadapter03; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; public class MainActivity extends Activity { //声明成员变量 private ImageView image; private GridView grid01; int [] imageIds = new int[]{ R.drawable.umeng_socialize_light_bar_bg_pad, R.drawable.umeng_update_btn_check_on_focused_holo_light, R.drawable.abc_list_pressed_holo_dark, R.drawable.ic_banana_rank, R.drawable.ic_bangumi_new, }; //创建一个集合存放数据 private List<Map<String,Object>> getdata(){ List<Map<String,Object>> listitem = new ArrayList<Map<String,Object>>(); //循环将数据放入图片 for(int i = 0 ;i<imageIds.length;i++){ Map<String,Object> map = new HashMap<String,Object>(); map.put("imageIds", imageIds[i]); listitem.add(map); } return listitem; } //创建一个ViewHolder,临时保存从getview中返回的view,方便下次调用 public final class ViewHolder{ public ImageView imageIds; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //findViewById找到布局中的控件 grid01 = (GridView)findViewById(R.id.grid01); image = (ImageView)findViewById(R.id.image); //为gridview创建一个适配器并将其绑定在上面 MyAdapter mAdapter = new MyAdapter(this,getdata()); grid01.setAdapter(mAdapter); //为gridview创建一个点击监听器,当我们点击某张图片时,imageview控件能显示这张图片 grid01.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { image.setImageResource(imageIds[position]); } }); } //创建一个一个适配器继承BaseAdapter,用于处理数据 class MyAdapter extends BaseAdapter{ private LayoutInflater mInflater; private List<Map<String,Object>> getdata; //利用构造器将需要用到的参数传入 public MyAdapter(Context context,List<Map<String,Object>> getdata){ this.mInflater = LayoutInflater.from(context); this.getdata = getdata; } @Override public int getCount() { //返回值为数据 集 中的条目数量 return getdata.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 holder =null; if (convertView == null ){ holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.activity_main,null); holder.imageIds = (ImageView)convertView.findViewById(R.id.image); convertView.setTag(holder); }else{ holder = (ViewHolder)convertView.getTag(); } holder.imageIds.setBackgroundResource((Integer) getdata.get(position).get("imageIds")); return convertView; } } }
相关文章推荐
- Android高效加载大图、多图解决方案,有效避免程序OOM
- 利用Java Apache POI 生成Word文档
- spring依赖注入使用小记
- JS焦点图 上下翻动 支持IE6
- Hibernate学习笔记
- Asp.net 知识准备二
- pl/sql 过程、函数
- linux下ntp对时设置
- 第40讲项目6——三色球问题
- Win10的日历应用中怎么新增日程安排及提醒?
- Genymotion配置及使用教程(最新最完整版附各部分下载地址)
- RecyclerView的使用(3)之添加Header和Footer
- 【腾讯内部工具分享】U3D资源优化工具
- NoSql database——Redis
- 阿里云centos6.7下yum安装nginx最新版
- MySQL 入门(五)—— 表的操作
- java集合框架03——ArrayList和源码分析
- ios推送之本地推送
- 递归算法原理分析及应用
- 直接跳转到拨号界面并带有号码。