Android中用GridView实现九宫格的两种方法
http://blog.csdn.net/shakespeare001/article/details/7768455

1.传统办法:实现一个继承BaseAdapter的 ImageAdapter

  1. package com.test;
  2.  
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.os.Bundle;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import android.widget.AdapterView;
  10. import android.widget.BaseAdapter;
  11. import android.widget.GridView;
  12. import android.widget.ImageView;
  13. import android.widget.TextView;
  14. import android.widget.Toast;
  15. import android.widget.AdapterView.OnItemClickListener;
  16.  
  17. public class GridViewActivity extends Activity {
  18. //存放各功能图片
  19. private Integer[] mFunctionPics = {R.drawable.mobilesecurity,R.drawable.infosecurity,
  20. R.drawable.no_interrupt,R.drawable.bianjiejieting,R.drawable.xiaomishu
  21. ,R.drawable.sms_send_attime,R.drawable.yule,R.drawable.setting};
  22. //存放各功能的名称
  23. private Integer[] mFunctionName = {R.string.phone_tools_box_name1,
  24. R.string.phone_tools_box_name2,R.string.phone_tools_box_name3,
  25. R.string.phone_tools_box_name4,R.string.phone_tools_box_name5,
  26. R.string.phone_tools_box_name6,R.string.phone_tools_box_name7,
  27. R.string.phone_tools_box_name8};
  28. @Override
  29. protected void onCreate(Bundle savedInstanceState) {
  30. super.onCreate(savedInstanceState);
  31. setContentView(R.layout.gridview_main);
  32.  
  33. GridView gridView= (GridView) this.findViewById(R.id.gridView);
  34. gridView.setAdapter(new ImageAdapter(this));
  35. gridView.setOnItemClickListener(new OnItemClickListener() {
  36. @Override
  37. public void onItemClick(AdapterView<?> parent, View view,
  38. int position, long id) {
  39. Toast.makeText(GridViewActivity.this, "图片ID:" + mFunctionPics[position],1).show();
  40. }
  41. });
  42.  
  43. }
  44.  
  45. public class ImageAdapter extends BaseAdapter {
  46. private Context mContext;
  47. private LayoutInflater inflater;

  48. private class GridHolder {
  49. ImageView phone_function_pic;
  50. TextView phone_function_name;
  51. }
  52. public ImageAdapter(Context c){
  53. mContext = c;
  54. inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  55. }
  56. @Override
  57. public int getCount() {
  58. return mFunctionPics.length;
  59. }
  60.  
  61. @Override
  62. public Object getItem(int position) {
  63. return position;
  64. }
  65.  
  66. @Override
  67. public long getItemId(int position) {
  68. return position;
  69. }
  70.  
  71. @Override
  72. public View getView(int position, View convertView, ViewGroup parent) {
  73. GridHolder holder;
  74. if(convertView == null) {
  75. convertView = inflater.inflate(R.layout.gridview_item, null);
  76. holder = new GridHolder();
  77. holder.phone_function_pic = (ImageView) convertView.findViewById(R.id.function_view);
  78. holder.phone_function_name = (TextView) convertView.findViewById(R.id.function_name);
  79. convertView.setTag(holder);
  80. } else {
  81. holder = (GridHolder) convertView.getTag();
  82. }
  83. holder.phone_function_pic.setImageResource(mFunctionPics[position]);
  84. holder.phone_function_name.setText(mFunctionName[position]);
  85. return convertView;
  86. }
  87.  
  88. }
  89.  
  90. }

2.跟ListView类似的数据绑定方式(SimpleAdapter, ArrayList<Map<String, Object>>)

http://blog.csdn.net/hellogv/article/details/4567095

Android中用GridView实现九宫格的两种方法(转)的更多相关文章

  1. Android Studio导入Eclipse项目的两种方法

    Android Studio导入Eclipse项目有两种方法,一种是直接把Eclipse项目导入Android Studio,另一种是在Eclipse项目里面进行转换,然后再导入Android Stu ...

  2. 修改android的wifi客户端名称的两种方法

    修改android的wifi客户端名称的两种方法     手机连接到无线路由时,在dhcp的客户端列表里面是这样的名称"android-89425253e5de3a2",这就是安卓 ...

  3. Android中Intent传递对象的两种方法(Serializable,Parcelable)

    今天要给大家讲一下Android中 Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是 Bundle.putP ...

  4. Android:实现无标题的两种方法

    实现无标题的两种方法:配置xml文件和编写代码设置 1.在AndroidManifest.xml文件中进行配置 实现全屏效果: android:theme="@android:style/T ...

  5. [转]Android中Intent传递对象的两种方法(Serializable,Parcelable)

    http://blog.csdn.net/xyz_lmn/article/details/5908355 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种 ...

  6. Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!

    [转][原文] 大家好,好久不见,今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object); ...

  7. Android 进入另外一个窗体的两种方法

    方法一: Intent intent = new Intent(); intent.setClassName(this, "com.wuyou.twoactivity.OtherActivi ...

  8. 文件中用WriteLine追加内容的两种方法

    if (!Directory.Exists("C:\\testll")) { Directory.CreateDirectory("C:\\testll"); ...

  9. 在Activity中响应ListView内部按钮的点击事件的两种方法!!!

    在Activity中响应ListView内部按钮的点击事件的两种方法 转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题: ...

随机推荐

  1. POJ 3468 A Simple Problem with Integers(分块入门)

    题目链接:http://poj.org/problem?id=3468 A Simple Problem with Integers Time Limit: 5000MS   Memory Limit ...

  2. 铁轨(rails, ACM/ICPC CERC 1997,Uva 514)

    铁轨(rails, ACM/ICPC CERC 1997,Uva 514) 题目描述 某城市有一个火车站,铁轨铺设如图所示.有n节车厢从A方向驶入车站,按进站顺序编号为1~n.你的任务是让它们按照某种 ...

  3. 基于Neutron的Kubernetes SDN实践经验之谈

    首先,向大家科普下Kubernetes所选择的CNI网络接口,简单介绍下网络实现的背景. CNI即Container Network Interface,是一套容器网络的定义规范,包括方法规范.参数规 ...

  4. Linux 150命令之查看文件及内容处理命令 more split file diff paste wc dps2unix

    more命令 使用more命令显示more /var/log/boot.log-20171129文件,可以从图中看出,系统在显示满一个屏幕时暂停,使用空格可以翻页,使用Q键可以退出. split sp ...

  5. PHP版本对比【转】

    其他历史http://www.cnblogs.com/yjf512/p/3588466.html php5.3 改动: 1.realpath() 现在是完全与平台无关的. 结果是非法的相对路径比如FI ...

  6. java布局学习(新)

    坚持学习java一段时间,最近自己需要做一个小型的系统,所以需要自己将自己的AWT知识巩固一下. 一.4大布局管理器. 1.边界布局BorderLayout 是JFrame和JDialog的默认布局方 ...

  7. spring冲刺第一天

    第一天总结 昨天我们开始了spring冲刺会议,我们进行了明确的分工,每个人都有自己的任务.我的目前任务是游戏地图的初步设计. 今天早上我们开了站立会议,算是正式开始了spring冲刺.我上网查找了一 ...

  8. B2

    组员1:吴晓晖(组长) 过去两天完成了哪些任务 代码重构基本完成 展示GitHub当日代码/文档签入记录 接下来的计划 推荐算法 还剩下哪些任务 组员2:陈锦谋 过去两天完成了哪些任务 重新制作图标 ...

  9. Codeforces Round #182 (Div. 1) B. Yaroslav and Time 最短路

    题目链接: http://codeforces.com/problemset/problem/301/B B. Yaroslav and Time time limit per test2 secon ...

  10. 处理Git不能上传大于100M文件问题

    记录一下自己工作遇到的问题,免得下次再遇到了还到处网上查资料解决. 自己的项目的版本控制用的是Git,代码仓库在github托管.项目里用到了百度导航SDK,由于百度导航SDK有了新版本,于是就更新到 ...