GridView之BaseAdapter的用法简单案例(二)【子元素item的高度暂时不知道控制】

来源:互联网 发布:最好java培训 编辑:程序博客网 时间:2024/05/21 02:33

一个简单的GridView来预览选择 Imageview来显示的案例
效果如下,有一个问题暂时没有解决就是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;        }    }}
0 0
原创粉丝点击