zoukankan      html  css  js  c++  java
  • 了解Android_09之GridView(网格视图)

    一、GridView视图是什么样的一种效果?

      GridView将自定义布局样式按照网格的方式进行显示,例如:

     GridView标签代码:

    <GridView
        android:id="@+id/gv1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:numColumns="3"
        android:horizontalSpacing="10dp"
        android:verticalSpacing="20dp"
        android:listSelector="@drawable/gridview_item"
    />

    其中引入了自定的按压样式:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true" android:drawable="@color/colorRed"/>
        <item android:state_pressed="true" android:drawable="@color/colorRed"/>
        <item android:state_focused="true" android:drawable="@color/colorRed"/>
    </selector>

    二、GridView类似ListView,内部item都是由Java代码进行控制的:

    先自定义一个item布局:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
    >
        <ImageView
            android:id="@+id/iv1"
            android:layout_width="match_parent"
            android:layout_height="150dp"
            android:background="#FFFF00"
            android:scaleType="centerCrop"
        />
        <TextView
            android:id="@+id/tv1"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:text="标签自带文字"
            android:textSize="18sp"
            android:gravity="center"
            android:textColor="#FF0000"
        />
    
    </LinearLayout>

    再自定义一个适配器(我这里直接用内部类):

    package com.example.gridviewdemo;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.*;
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import com.bumptech.glide.Glide;
    
    public class MainActivity extends AppCompatActivity {
        GridView gridView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            gridView = findViewById(R.id.gv1);
            gridView.setAdapter(new GridViewAdapter(this));
            gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    Toast.makeText(MainActivity.this,"单击了位置为:"+i,Toast.LENGTH_SHORT).show();
                }
            });
            gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                    Toast.makeText(MainActivity.this,"你长按了"+i,Toast.LENGTH_SHORT).show();
                    return true;
                }
            });
        }
        private class GridViewAdapter extends BaseAdapter {
            Context context;
            LayoutInflater layoutInflater;
            GridViewAdapter(Context context){
                this.context = context;
                this.layoutInflater = LayoutInflater.from(context);
            }
    
            @Override
            public int getCount() {
                return 9;
            }
    
            @Override
            public Object getItem(int i) {
                return null;
            }
    
            @Override
            public long getItemId(int i) {
                return 0;
            }
    
            @Override
            public View getView(int i, View view, ViewGroup viewGroup) {
                view = layoutInflater.inflate(R.layout.gridview_item,null);
                ImageView imageView = view.findViewById(R.id.iv1);
                TextView textView = view.findViewById(R.id.tv1);
                Glide.with(this.context).load("https://t7.baidu.com/it/u=3616242789,1098670747&fm=79&app=86&size=h300&n=0&g=4n&f=jpeg?sec=1604332215&t=cb2b5ed8ce723d4117196f3ee207a001").into(imageView);
                textView.setText("设置后的文本");
                return view;
            }
        }
    }

    与ListView十分相像,所以不做过多的解释了。

    最后效果:

  • 相关阅读:
    mvc 注册脚本的其他方法
    如何将html代码转换为Xml并生成Dom树
    用TFIDF值来判断词的重要性
    oem key
    vs2010 下的ado.net 实体模型创建数据库时datetime 类型的问题
    asp.net mvc 动态注册脚本
    ASP.NET 中如何对生成的 HTML 内容流进行控制
    C# 子窗体调用父窗体的方法
    layui 弹出新页面
    winform excel导入进度条
  • 原文地址:https://www.cnblogs.com/wmskywm/p/13899172.html
Copyright © 2011-2022 走看看