现在的位置: 首页 > 综合 > 正文

美化GridView视图(BaseAdapter)

2013年04月23日 ⁄ 综合 ⁄ 共 5092字 ⁄ 字号 评论关闭

效果图:

1.src文件夹下 ShowActivity.java文件内容:

package com.jun.activity;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.jun.adapter.MyAdapter;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.GridView;
import android.widget.SimpleAdapter;

public class ShowActivity extends Activity {
    private GridView gridView=null;
    private MyAdapter adapter=null;
    private SimpleAdapter adapter1=null;
    private List<HashMap<String,Object>> list=null;
    private HashMap<String,Object> map=null;
    private String data[]={"图片1","图片2","图片3","图片4","图片5","图6","图片7","图片8","图片9",
            "图片10","图片11","图片12","图片13","图片14","图片15","图片16"};
    private int   imgId[]={R.drawable.a,R.drawable.a,R.drawable.a,R.drawable.a,R.drawable.a,
            R.drawable.a,R.drawable.a,R.drawable.a,R.drawable.a,R.drawable.a,R.drawable.a,
            R.drawable.a,R.drawable.a,R.drawable.a,R.drawable.a,R.drawable.a};
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);
        init();
        setData();
    }
private void init(){
    
    gridView=(GridView) findViewById(R.id.grid_view);
    list=new ArrayList<HashMap<String,Object>>();
}
private void setData(){
//    使用BaseAdapter添加数据
    adapter=new MyAdapter(ShowActivity.this, data, imgId);
    
    gridView.setAdapter(adapter);
    
    
    
//    使用SimpeAdapter添加数据
//    for(int i=0;i<data.length;i++){
//        
//        map=new HashMap<String, Object>();
//        
//        map.put("text", data[i]);
//        map.put("img", imgId[i]);
//        list.add(map);
//        
//    }
//    adapter1=new SimpleAdapter(ShowActivity.this, list, R.layout.gridview_item, new String[]{"text","img"}, new int[]{R.id.gridview_text,R.id.gridview_img});
//    gridView.setAdapter(adapter1);
}
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_show, menu);
        return true;
    }
}

2.ShowActivity布局文件activity_show.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:background="@drawable/activity_background" >

    <TextView
        android:id="@+id/title_bar_text"
        android:layout_width="match_parent"
        android:layout_height="45dip"
        android:layout_alignParentTop="true"
        android:gravity="center_vertical|center_horizontal"
        android:background="@drawable/theme_title_red"
        android:text="@string/test"
        android:textSize="20dip"
        android:textColor="#fff"
        tools:context=".ShowActivity" />
    <GridView
        android:id="@+id/grid_view"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/title_bar_text"
        android:layout_marginLeft="1dip"
        android:layout_marginRight="1dip"
        android:numColumns="2"
       android:columnWidth="5dip"
        android:cacheColorHint="#00000000"
        ></GridView>
        

</RelativeLayout>

3.继承自BaseAdapter适配器类MyAdapter.java文件内容:

package com.jun.adapter;

import com.jun.activity.R;

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 MyAdapter extends BaseAdapter {

    private String data[]=null;
    private int imgId[]=null;
    private Context context=null;
    private LayoutInflater inflater=null;
    public MyAdapter(Context context,String[] data, int[] imgId) {
        super();
        this.data = data;
        this.imgId = imgId;
        this.context = context;
        
        inflater=LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return data.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
    private class Holder{
        
        TextView tv=null;
        ImageView img=null;
        public TextView getTv() {
            return tv;
        }
        public void setTv(TextView tv) {
            this.tv = tv;
        }
        public ImageView getImg() {
            return img;
        }
        public void setImg(ImageView img) {
            this.img = img;
        }
        
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
//        获得holder以及holder对象中tv和img对象的实例
        Holder holder;
        if(convertView==null){
            
            
            convertView=inflater.inflate(R.layout.gridview_item, null);
            holder=new Holder();
            holder.tv=(TextView) convertView.findViewById(R.id.gridview_text);
            holder.img=(ImageView) convertView.findViewById(R.id.gridview_img);
            
            convertView.setTag(holder);
            
        }else{
            holder=(Holder) convertView.getTag();
            
        }
//        为holder中的tv和img设置内容
        holder.tv.setText(data[position]);
        holder.img.setImageResource(imgId[position]);
//        注意  默认为返回null,必须得返回convertView视图
        return convertView;
    }

}

4.GridView组件上面的布局:   gridview_item.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:background="@drawable/activity_background" >
<ImageView
            android:id="@+id/gridview_img"
            android:layout_width="120dip"
            android:layout_height="120dip"
            android:layout_margin="10dip"
            android:background="@drawable/four_bg"
            android:src="@drawable/a" />
    <TextView
        android:id="@+id/gridview_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/gridview_img"
        android:gravity="center_vertical|center_horizontal"
        android:textColor="#000"
        android:textSize="14dip"
        tools:context=".ShowActivity" />

</RelativeLayout>

抱歉!评论已关闭.