zoukankan      html  css  js  c++  java
  • Android开发笔记(十)——GridView网格视图

    还是和上节课一样,先新建一个package gridview ,然后在该package下新建java class GridViewActivity ,继承自 AppCompatActivityAppCompatActivityActivity 的衍生。

    之后新建一个layout文件 activity_grid_view.xml ,在 GridViewActivity.java 中补全代码:

    注意这里要在 AndroidMainfest.xml 文件中手动声明:

     <activity android:name=".gridview.GridViewActivity"></activity>
    

    MainActivity.java 中添加一个Button组件用来跳转到GridView的展示界面,然后在 MainActivity.java 中添加该按钮的声明。之后就可以在布局文件 activity_grid_view.xml 中进行布局啦。

    常用属性

    Android:numColumns="auto_fit"   //GridView的列数设置为自动
    android:verticalSpacing=”10dp”          //两行之间的边距
    android:horizontalSpacing=”10dp”      //两列之间的边距 
    

    在布局文件 activity_grid_view.xml 中的布局如下:

    可以看到网络视图的初始样子。

    接下来在layout文件下再新建一个layout resource filer用来设计网格想要展示的内容:

    进行布局,大体布局如下:

    Adapter接口

    在gridview包下面新建一个class继承自 BaseAdapter 重写里面的方法:

    package com.example.myapplication.gridview;
    
    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;
    
    import com.bumptech.glide.Glide;
    import com.example.myapplication.R;
    
    public class MyGridViewAdapter extends BaseAdapter {
    
        private Context mContext;
        private LayoutInflater mLayoutInflater;
    
        public MyGridViewAdapter(Context context){
            this.mContext=context;
            mLayoutInflater=LayoutInflater.from(context);
        }
    
        @Override
        public int getCount() {
            return 12;
        }
    
        @Override
        public Object getItem(int position) {
            return null;
        }
    
        @Override
        public long getItemId(int position) {
            return 0;
        }
        static class ViewHolder{
            public ImageView imageView;
            public TextView textView;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder=null;
            if(convertView==null){
                convertView=mLayoutInflater.inflate(R.layout.layout_grid_item,null);
                holder=new ViewHolder();
                holder.imageView=convertView.findViewById(R.id.iv_grid);
                holder.textView=convertView.findViewById(R.id.tv_title);
                convertView.setTag(holder);
            }else {
                holder= (ViewHolder) convertView.getTag();
            }
            //给控件赋值
            holder.textView.setText("唐老鸭");
            Glide.with(mContext).load("https://img.newyx.net/upload/gallery/20130911/13858232928.JPG").into(holder.imageView);
    
            return convertView;
        }
    }
    

    这里主要重写了 getView 函数,用来显示每一个网格的样式。
    GridViewActivity.java 中进行对GridView控件的声明:

    当前的效果:

    点击事件和长按事件

    GridViewActivity.java 中添加一个事件如下:

    return false 是指,执行长按事件之后,该事件并不会就此停止,点击事件同样也会被触发, return true 的话执行完长按事件之后就会直接停止,

    效果如下:

    这个和ListView的用法基本一致!

  • 相关阅读:
    Spark权威指南(中文版)----第11章 Datasets(1)
    左右侧滑动窗口
    解决右侧滑动窗口溢出的问题
    y轴的文字左对齐
    解决echarts图表宽度不够字符被覆盖问题
    Helloworld.JaVa 第一次编程
    二叉排序树:BST: (Binary Sort(Search) Tree)
    赫夫曼编码码(Huffman Coding)
    赫夫曼树(Huffman Tree)
    堆排序
  • 原文地址:https://www.cnblogs.com/yangdd/p/13334821.html
Copyright © 2011-2022 走看看