GridView是一个表格控件,可以在每个单元格中显示自定义的View或者字符串。在这里我们要实现一个图标下方有文字的效果。
1、首先我们应自定义布局文件image_text.xml。代码如下:
1 26 7 13 18
2、写一个实体类用来存放单元格里面每个视图的图片资源和文字:
1 public class EachIcon { 2 3 private int imageSrcId; 4 private String iconString; 5 6 public EachIcon(int imageSrcId,String iconString) 7 { 8 super(); 9 this.imageSrcId = imageSrcId;10 this.iconString = iconString;11 }12 public int getImageSrcId()13 {14 return imageSrcId;15 }16 17 public void setImageSrcId(int imageSrcId)18 {19 this.imageSrcId = imageSrcId;20 }21 22 public String getIconString ()23 {24 return iconString;25 }26 27 public void setIconString(String iconString)28 {29 this.iconString = iconString;30 }31 }
3、第三步我们还需要自定义一个适配器,名称为ImageAdapter,代码如下:
1 import java.util.ArrayList; 2 import java.util.List; 3 import android.app.Activity; 4 import android.content.Context; 5 import android.util.Log; 6 import android.view.LayoutInflater; 7 import android.view.View; 8 import android.view.ViewGroup; 9 import android.widget.BaseAdapter;10 import android.widget.ImageView;11 import android.widget.TextView;12 13 public class ImageAdapter extends BaseAdapter {14 private ListeachIconList = new ArrayList();15 private Context context;16 17 public ImageAdapter(Context context)18 {19 super();20 this.context = context;21 22 EachIcon e1 = new EachIcon(R.drawable.a0,"图标1");23 EachIcon e2 = new EachIcon(R.drawable.a1,"图标2");24 EachIcon e3 = new EachIcon(R.drawable.a2,"图标3");25 EachIcon e4 = new EachIcon(R.drawable.a3,"图标4");26 EachIcon e5 = new EachIcon(R.drawable.a4,"图标5");27 EachIcon e6 = new EachIcon(R.drawable.a5,"图标6");28 EachIcon e7 = new EachIcon(R.drawable.a6,"图标7");29 EachIcon e8 = new EachIcon(R.drawable.a7,"图标8");30 EachIcon e9 = new EachIcon(R.drawable.a8,"图标9");31 EachIcon e10 = new EachIcon(R.drawable.a9,"图标10");32 EachIcon e11 = new EachIcon(R.drawable.a10,"图标11");33 EachIcon e12 = new EachIcon(R.drawable.a11,"图标12");34 EachIcon e13 = new EachIcon(R.drawable.a12,"图标13");35 EachIcon e14 = new EachIcon(R.drawable.a13,"图标14");36 EachIcon e15 = new EachIcon(R.drawable.a14,"图标15");37 EachIcon e16 = new EachIcon(R.drawable.a15,"图标16");38 EachIcon e17 = new EachIcon(R.drawable.a16,"图标17");39 40 eachIconList.add(e1);41 eachIconList.add(e2);42 eachIconList.add(e3);43 eachIconList.add(e4);44 eachIconList.add(e5);45 eachIconList.add(e6);46 eachIconList.add(e7);47 eachIconList.add(e8);48 eachIconList.add(e9);49 eachIconList.add(e10);50 eachIconList.add(e11);51 eachIconList.add(e12);52 eachIconList.add(e13);53 eachIconList.add(e14);54 eachIconList.add(e15);55 eachIconList.add(e16);56 eachIconList.add(e17); 57 }58 59 @Override60 public int getCount() {61 // TODO Auto-generated method stub62 return eachIconList.size();63 }64 65 @Override66 public Object getItem(int arg0) {67 // TODO Auto-generated method stub68 return null;69 }70 71 @Override72 public long getItemId(int position) {73 // TODO Auto-generated method stub74 return 0;75 }76 77 @Override78 public View getView(int position, View convertView, ViewGroup parent) {79 // TODO Auto-generated method stub80 Log.v("rub","---------------------------");81 82 LayoutInflater inflater = ((Activity)context).getLayoutInflater();83 View imgss = inflater.inflate(R.layout.image_text,null);84 85 ImageView ivimgss = (ImageView)imgss.findViewById(R.id.imageview);86 TextView tvimgss = (TextView)imgss.findViewById(R.id.textview);87 88 ivimgss.setImageResource(eachIconList.get(position).getImageSrcId());89 tvimgss.setText(eachIconList.get(position).getIconString());90 return imgss;91 }92 }
4、第四步在Activity里面绑定GridView:
1 import android.app.Activity; 2 import android.os.Bundle; 3 import android.util.Log; 4 import android.view.View; 5 import android.widget.AdapterView; 6 import android.widget.AdapterView.OnItemClickListener; 7 import android.widget.GridView; 8 import android.widget.ListAdapter; 9 import android.widget.TextView;10 11 public class MainActivity extends Activity {12 13 @Override14 protected void onCreate(Bundle savedInstanceState) {15 super.onCreate(savedInstanceState);16 setContentView(R.layout.activity_main);17 18 ListAdapter adapter = new ImageAdapter(this);19 GridView gv = (GridView)this.findViewById(R.id.gridview);20 21 gv.setAdapter(adapter);22 gv.setOnItemClickListener(new OnItemClickListener() {23 @Override24 public void onItemClick(AdapterView arg0, View arg1, int arg2,25 long arg3) {26 // TODO Auto-generated method stub27 Log.v("------------------单击的索引值:", ""+((TextView)arg1.findViewById(R.id.textview))28 .getText().toString()+"索引是:"+arg2);29 }30 });31 }32 }
这样一个自定义的视图加文字描述的GridView(表格控件)就完成了。对了,还有主布局文件:
110 11 19 20
写下来了以备自己忘记。
下载地址: