Android: SimpleAdapter+GridView 简单图片展示

news2024/11/24 17:24:10

1:原理解析:

    一个xml放总布局,一个xml放适配器要加载的模板(我喜欢这样理解);

    java中写适配事件;

2:目录:

3:主布局:最重要的是要放一个GridView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:textColor="#FF0000"
        android:text="请欣赏美图!"/>
    <!--网格视图-->
    <GridView
        android:id="@+id/gridView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnWidth="100dp"
        android:gravity="center"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth"
        android:verticalSpacing="5dp">
    </GridView>

</LinearLayout>

注意其中两个属性:

android:columnWidth="110dp"
android:numColumns="auto_fit"

这可以使得我们能够通过调节前者来修改列数

4:加载的模板  main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<!-- 放图片-->
    <ImageView
        android:layout_width="120dp"
        android:layout_height="110dp"
        android:id="@+id/image"
        android:paddingLeft="10sp"
        android:scaleType="centerCrop"
        />
<!--    放图片名称-->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/title"
        android:padding="5sp"

        />
</LinearLayout>

 就相当于把数据通过这个样式加载到GridView中的item的位置上去

5:java调用(我特别喜欢SimpleAdapter,各种适配器各有优点,根据实际情况选取)

package com.example.a4_4_2_2;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        GridView gridView1=(GridView)findViewById(R.id.gridView1);
        //定义并初始化保存图片id的数组
        Integer[] imageID = {R.drawable.image,R.drawable.image2,R.drawable.image3,R.drawable.image4,
                R.drawable.image5,R.drawable.image6,R.drawable.image7,R.drawable.image8};
        //定义并初始化保存名字的字符数组
        String[] title=new String[]{"风景1","风景2","风景3","风景4","风景5","风景6","风景7","风景8"};
        //创建一个list集合
        List<Map<String,Object>> listItems =new ArrayList<Map<String,Object>>();
        //通过for循环将图片id和文字放到Map中,并添加到list列表中
        for(int i=0;i<imageID.length;i++)
        {
            Map<String,Object> map=new HashMap<String, Object>();//实例化Map对象
            map.put("image",imageID[i]);
            map.put("name",title[i]);
            listItems.add(map);
        }
        //创建SimpleAdapter
        SimpleAdapter adapter=new SimpleAdapter(this,listItems,R.layout.main,new String[]{"name","image"},new int[]{R.id.title,R.id.image});
        gridView1.setAdapter(adapter);//将适配器与Gridview关联
        gridView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                //获取选择项的值
                Map<String,Object> map=(Map<String,Object>)adapterView.getItemAtPosition(i);
                Toast.makeText(MainActivity.this,map.get("name").toString(),Toast.LENGTH_SHORT).show();
            }
        });
    }
}

用数组来存放/获取要适配的数据;

把对应项通过map放入list;

把view和数据用SimpleAdapter适配在一起;

6:应用原理如上,实战中灵活使用

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/50949.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计Django港口集团仓库管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Google单元测试框架gtest之官方sample笔记3--值参数化测试

1.7 sample7--接口测试 值参数不限定类型&#xff0c;也可以是类的引用&#xff0c;这就可以实现对类接口的测试&#xff0c;一个基类可以有多个继承类&#xff0c;那么可以测试不同的子类功能&#xff0c;但是只需要写一个测试用例&#xff0c;然后使用参数列表实现对每个子类…

m基于可见光通信系统的RFID接口过程以及ALOHA防碰撞算法的matlab仿真

目录 1.算法描述 2.matlab算法仿真效果 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 射频识别技术(Radio Frequency Identification&#xff0c;RFID)是一种非接触式自动识别技术&#xff0c;与传统的识别方式相比&#xff0c;它无需直接接触、无需光学可视、无需人工干预即…

产品经理的七大定律的总结

最近学习了产品经理的七大定律&#xff0c;这些设计准则都基于人类心理学&#xff1a;人们如何感知、学习、推理、记忆&#xff0c;以及把意图转换为行动。 1、菲茨&#xff08;Paul Fitt&#xff09;定律 菲茨定律的对于产品设计时的启示&#xff1a; 1&#xff09;按钮等可…

SpringBoot 3.0 新特性,内置声明式HTTP客户端

http interface 从 Spring 6 和 Spring Boot 3 开始&#xff0c;Spring 框架支持将远程 HTTP 服务代理成带有特定注解的 Java http interface。类似的库&#xff0c;如 OpenFeign 和 Retrofit 仍然可以使用&#xff0c;但 http interface 为 Spring 框架添加内置支持。 什么是…

steam deck科普、上手教程及模拟器配置指南

steam_deck前言 早在2021年得时候&#xff0c;坊间就开始流传steam deck这个东西要问世了。但是中途跳了几次票&#xff0c;直到2022年2月&#xff0c;第一批steam deck才正式面向大众玩家。在熟悉steam deck之前&#xff0c;我们有必要了解如下的知识: Steam 准确来说&…

G1D27-deberta右键创建md文档

回家啦&#xff01;&#xff01;&#xff01;中午的炒饭太好吃了&#xff01;&#xff01;吃的好撑&#xff01;&#xff01;回家后和mm去了超市&#xff0c;买了冰淇淋、薯片和水果&#xff0c;好开心&#xff01;&#xff01;&#xff01; 下午睡了一会觉&#xff0c;真的好舒…

Spring MVC处理用户请求的完整流程

Spring MVC 框架是高度可配置的&#xff0c;包含多种视图技术&#xff0c;例如 JSP 技术、Velocity、Tiles、iText 和 POI。 Spring MVC 框架并不关心使用的视图技术&#xff0c;也不会强迫开发者只使用 JSP 技术&#xff0c;但教程中使用的视图是 JSP&#xff0c;本节主要介绍…

猿如意 | 带你手把手安装 Visual Studio Code

目录 一、什么是猿如意 二、借助猿如意安装Visual Studio Code 1、安装猿如意 2、安装Visual Studio Code 三、总结 一、什么是猿如意 猿如意是CSDN推出来的一款面向开发者的工具&#xff0c;他能够帮助开发者&#xff0c;找到自己心仪的开发工具提高自己的开发效率。 目标…

华为云两台机器内网互联

文章目录1. 前言2. ping公网ip3. 不同账号需要在同一大区4. 创建虚拟私有云5. 更换服务器所属的VPC网段6. 创建对等连接7. 填写对端项目ID和对端VPC ID8. 配置对等连接9. 添加对等连接路由10. 测试是否联通11. 后记1. 前言 最近在华为云买了两台低配Linux机器&#xff0c;35一…

聚焦出海 长城汽车50多国家和地区经销商集团齐聚泰国车博会

11月30日&#xff0c;长城汽车携新能源豪华阵容登陆第39届泰国国际汽车博览会&#xff08;简称“泰国车博会”&#xff09;。以“GWM Light the Future”&#xff08;长城汽车点亮未来&#xff09;为参展主题&#xff0c;长城汽车旗下中大型商务豪华SUV坦克500 HEV量产版、欧拉…

[附源码]Python计算机毕业设计SSM留守儿童管理平台(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

英文Paper写作如何正确掌握质量情况?

在国外留学的学子们要想完成高质量高水平的作业&#xff08;assignment与Paper&#xff09;&#xff0c;那么首先就要在心里想想这些基本必要的问题&#xff0c;等有了这些问题的轮廓之后&#xff0c;相信留学的朋友都能够写出满意自足的Paper或assignment。 1&#xff0e;Why …

TypeError: can only concatenate list (not “int“) to list

参考 TypeError: can only concatenate list (not "int") to list - 云社区 - 腾讯云 观察是否将列表和非列表的类型相连。 入队enqueue_op 5会报错&#xff0c;改成乘5就不会了。

Springboot整合策略模式概念->使用场景->优缺点->企业级实战

一、前言 策略模式可能是在工作中使用最多的&#xff0c;也是在面试中最常提到的&#xff0c;代码重构和优化的必备&#xff01; 小编之前也是一直说&#xff0c;其实没有真正的实战&#xff1b;最近有了机会实战了一下&#xff0c;来分享一下使用心得和在企业级的使用&#x…

Mac装机清理工具CleanMyMac2022最新版功能介绍

从最初开始下载CleanMyMac开始&#xff0c;CMM一直在提供智能的清理&#xff0c;从颇受小白用户喜爱的自动清理特性开始&#xff0c;仅需一键即可快速而安全地清理系统各角落垃圾&#xff0c;释放宝贵硬盘空间&#xff0c;CMM或许可以说是是 Mac上最知名的系统清理工具了。 Cl…

java EE初阶 —— 线程的安全问题

文章目录1.线程安全1.1 代码体现线程的不安全1.2 线程安全问题分析1.3 产生线程安全问题的原因1.4 线程安全问题的解决办法1.5 synchronized 的使用方法1.线程安全 多线程的抢占式执行&#xff0c;带来的随机性是线程安全问题的罪魁祸首&#xff0c;万恶之源。 如果没有多线程…

国内表格软件-FineReport Count函数

1. 概述 1.1 函数作用 计算数组或数据区域中所含项的个数&#xff0c;例如统计「地区数」和「销售员个数」&#xff0c;如下图所示&#xff1a; 也可与其他函数嵌套使用&#xff0c;例如进行「条件计数」&#xff0c;计算除孙林以外的销售员个数&#xff0c;如下图所示&#x…

Lactoferrin-PEG-alginate 乳铁蛋白-聚乙二醇-海藻酸钠

产品名称&#xff1a;乳铁蛋白-聚乙二醇-海藻酸钠 英文名称&#xff1a;Lactoferrin-PEG-alginate 纯度&#xff1a;95% 存储条件&#xff1a;-20C&#xff0c;避光&#xff0c;避湿 外观:固体或粘性液体&#xff0c;取决于分子量 PEG分子量可选&#xff1a;350、550、750、1k、…

VBA驱动SAP GUI自动化:查找页面元素FindAllByName

我们在VBA中嵌入SAP原生的【脚本录制与回放】功能生成的VBS脚本&#xff0c;可以实现很多自动化操作。但只有我们对SAP做了一系列动作&#xff0c;才会得到这些动作的脚本。然而&#xff0c;一旦我们需要用代码提前做一些判断&#xff0c;然后再决定后续的动作时&#xff0c;这…