GridView的标准写法

来源:互联网 发布:java 函数形参和实参 编辑:程序博客网 时间:2024/06/11 22:06

MainActivity

public class MainActivity extends Activity {    private GridView gd;    private List<Picture> list;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initData();        processData();    }    private void initView() {        gd = (GridView) findViewById(R.id.gd);    }    private void initData() {        list = new ArrayList<Picture>();        // 只能有7张图片,再多就oom了,下次解决图片过多oom的问题        list.add(new Picture(R.drawable.iv1));        list.add(new Picture(R.drawable.iv2));        list.add(new Picture(R.drawable.iv3));        list.add(new Picture(R.drawable.iv4));        list.add(new Picture(R.drawable.iv5));        list.add(new Picture(R.drawable.iv6));        list.add(new Picture(R.drawable.iv7));    }    private void processData() {        MyAdapter myAdapter = new MyAdapter(getApplication(), list);        gd.setAdapter(myAdapter);    }}

MyAdapter

public class MyAdapter extends BaseAdapter {    private Context context;    private List<Picture> list;    public MyAdapter(Context context, List list) {        this.context = context;        this.list = list;    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return null;    }    @Override    public long getItemId(int position) {        return 0;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder holder = new ViewHolder();        if (convertView == null) {            // 复用历史缓存对象            convertView = View.inflate(context, R.layout.item_grid, null);        }        holder.iv_icon = (ImageView) convertView.findViewById(R.id.iv_icon);        Picture picture = list.get(position);        holder.iv_icon.setBackgroundResource(picture.getRes());        return convertView;    }    /**     * 减少findViewById次数     */    private class ViewHolder {        ImageView iv_icon;    }}

JavaBean

public class Picture {private int res;public Picture(int res) {    super();    this.res = res;}public int getRes() {    return res;}public void setRes(int res) {    this.res = res;}}

布局文件

<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="com.example.gridviewDemo.MainActivity" >    <GridView        android:id="@+id/gd"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:numColumns="3" >    </GridView></RelativeLayout>

item

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:gravity="center_horizontal"    android:orientation="vertical" >    <ImageView        android:id="@+id/iv_icon"        android:layout_width="100dip"        android:layout_height="70dip"        android:layout_marginTop="5dip"        android:background="@drawable/ic_launcher" /></LinearLayout>

效果
这里写图片描述

0 0
原创粉丝点击