写出来的效果如下:

  • 布局文件:
    <GridView        android:id="@+id/gv"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:numColumns="3"        android:scrollbars="none" />
android:scrollbars="none" : 不显示滚动条android:numColumns="3"    : 显示有三列
  • 写adapter类(代码如下):
public class GridViewAdapter extends BaseAdapter {    private Context context;    private List> list;    public GridViewAdapter(Context context, List> list) {        this.context = context;        this.list = list;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder viewHolder;        if (convertView == null) {            convertView = LayoutInflater.from(context).inflate(R.layout.item_gridview, null, false);            viewHolder = new ViewHolder(convertView);            convertView.setTag(viewHolder);        } else {            viewHolder = (ViewHolder) convertView.getTag();        }        try {            /**             * =========从list中取出数据并设置在控件中             */            Map map = list.get(position);            String name = (String) map.get("name");            int img = (int) map.get("img");            viewHolder.gvItemImg.setImageResource(img);            viewHolder.gvItemTv.setText(name);        } catch (Exception e) {            Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();        }        return convertView;    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    static class ViewHolder {        @BindView(R.id.gv_item_img)        ImageView gvItemImg;        @BindView(R.id.gv_item_tv)        TextView gvItemTv;        ViewHolder(View view) {            ButterKnife.bind(this, view);        }    }}
  • 在Activity中的代码如下:
public class MainActivity extends AppCompatActivity {    @BindView(R.id.gv)    GridView gv;    private List> list;    private GridViewAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);        //拿到数据        getAndCombinData();        adapter = new GridViewAdapter(this, list);        gv.setAdapter(adapter);    }    @OnItemClick(R.id.gv)    public void onItemClick(int poaition) {        Toast.makeText(this, names[poaition], Toast.LENGTH_SHORT).show();    }    /**     * ============拿到并组合数据组合数据     */    private void getAndCombinData() {        list = new ArrayList<>();        Map map = null;        for (int i = 0; i < names.length; i++) {            map = new HashMap<>();            map.put("name", names[i]);            map.put("img", imgs[i]);            list.add(map);        }    }    private int[] imgs = new int[]{            R.drawable.home,            R.drawable.work,            R.drawable.data,            R.drawable.msg,            R.drawable.ddgl,            R.drawable.me,            R.drawable.sjtj,            R.drawable.xxcx,            R.drawable.qx,            R.drawable.qxgl,            R.drawable.home,            R.drawable.work,            R.drawable.data,            R.drawable.msg,            R.drawable.ddgl,            R.drawable.me,            R.drawable.sjtj,            R.drawable.xxcx,            R.drawable.qx,            R.drawable.qxgl    };    private String[] names = new String[]{            "主页", "任务", "数据", "消息", "设置", "我的", "数据统计", "信息管理", "权限", "权限管理",            "主页", "任务", "数据", "消息", "设置", "我的", "数据统计", "信息管理", "权限", "权限管理"    };}

更多相关文章

  1. Android 实现与Eclipse数据交互
  2. Android之数据存入SD卡中
  3. Android get+post传值获取php服务端的json数据
  4. android 常用数据库字段描述
  5. android raw 文件下写入数据库
  6. Android中的使用ListView控件显示List集合中的数据,并对Item响应
  7. Android Sqlite 数据库多线程操作

随机推荐

  1. Android(安卓)数据Parcel序列化过程源码
  2. Android获取屏幕分辨率及DisplayMetrics
  3. Android(安卓)获取ROOT权限原理解析
  4. Android高手进阶教程(八)之----Android(
  5. android 传感器获取方向总结
  6. Android中应用调用系统权限
  7. vue3 父子组件传值详解
  8. 详解React 和 Redux的关系
  9. js-基础(五)classList对象、blur事件进行表
  10. Vue之Axios异步通信详解