Android列表片段

news2024/11/17 19:35:40

下面创建第二个片段WorkoutFragment,它包含不同训练项目构成的一个列表,用户可以从这个列表中选择训练项目。

列表视图是只包含一个列表的片段
列表片段是一种专门处理列表的片段,它会自动绑定到一个列表视图,所以不需要另外创建列表视图。使用列表片段显示数据有几个主要的有点:
1、不需要创建你自己的布局
列表片段会自动定义自己的布局,所以你不用创建或维护XML布局。列表片段生成的布局包括一个列表视图,可以在活动代码中使用列表片段的getListView()方法访问这个列表视图。要得到列表视图才能指定列表视图中应当显示什么数据。
2、不需要实现你自己的事件监听器。
ListFragment类自动实现了一个监听器,会监听什么时候单击了列表视图中的列表项。不用创建你自己的时间监听器并绑定到列表视图,而只需要实现列表片段的onListItemClick()方法。这样在用户单击列表视图中的列表项时可以更容易地让片段做出响应。

如何创建列表视图
在com.hfad.workout包中创建一个名为WorkoutListFragment.java的新片段Fragment(Blank)。
注意这里没有选择Fragment(List),因为这会生成更复杂的代码,其中大多数并不需要用到。Fragment(Blank)生成的代码更简单。将WorkoutListFragment.java替换为下面的代码:

package com.hfad.workout;

import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class WorkoutListFragment extends ListFragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return super.onCreateView(inflater, container, savedInstanceState);
    }
}

适配器
适配器可以将数据与列表视图连接起来,相当于视图与数据源之间的一个桥梁。数组适配器是专门处理数组的一种适配器类型。这里使用一个数组适配器将一个数组绑定到列表视图。
初始化数组适配器时,首先要指定绑定到列表的数组中包含什么类型的数组,然后要传入3个参数:一个Context(上下文,通常是当前活动)、一个布局资源(指定如何显示数组中的各项),以及数组本身。
Activity类是Context类的一个子类,但是Fragment类不是Context子类,不能访问全局信息,也不能用它向数组适配器传递当前上下文。一种办法是使用另一个对象getContext()方法来得到当前上下文的一个引用。如果你在片段的onCreateView方法中创建这个适配器,就可以使用onCreateView()中的LayoutInflator参数的getContext方法得到上下文。
一旦创建了适配器,要使用片段的setListAdapter方法把它绑定到ListView。
更新WorkoutListFragment如下:

package com.hfad.workout;

import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;

public class WorkoutListFragment extends ListFragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        String[] names = new String[Workout.workouts.length];
        for (int i = 0; i < names.length; i++){
            //创建一个包含训练xian
            names[i] = Workout.workouts[i].getName();
        }
        //创建一个数组适配器
        ArrayAdapter<String> adapter = new ArrayAdapter<>(inflater.getContext(), android.R.layout.simple_list_item_1, names);
        //将数组适配器绑定到列表视图
        setListAdapter(adapter);
        return super.onCreateView(inflater, container, savedInstanceState);
    }
}

更新布局
现在需要将布局中显示WorkoutListFragment,更新activity_main.xml。

<?xml version="1.0" encoding="utf-8"?>
<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="com.hfad.workout.WorkoutListFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

运行应用
在这里插入图片描述

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

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

相关文章

【 Tkinter界面-练习03】实现动画

一、说明 在本教程中&#xff0c;我们将学习Python Tkinter Animation。在这里&#xff0c;我们将了解如何在 python 中使用 Tkinter 创建动画&#xff0c;并将介绍与动画相关的不同示例。我们还将讨论这些主题 二、Python Tkinter 动画 在本节中&#xff0c;我们将学习 Python…

服务器数据恢复- Ext4文件系统分区挂载报错的数据恢复案例

Ext4文件系统相关概念&#xff1a; 块组&#xff1a;Ext4文件系统的空间被划分为若干个块组&#xff0c;每个块组内的结构大致相同。 块组描述符表&#xff1a;每个块组都对应一个块组描述符&#xff0c;这些块组描述符统一放在文件系统的前部&#xff0c;称为块组描述符表。每…

【python爬虫】15.Scrapy框架实战(热门职位爬取)

文章目录 前言明确目标分析过程企业排行榜的公司信息公司详情页面的招聘信息 代码实现创建项目定义item 创建和编写爬虫文件存储文件修改设置 代码实操总结 前言 上一关&#xff0c;我们学习了Scrapy框架&#xff0c;知道了Scrapy爬虫公司的结构和工作原理。 在Scrapy爬虫公司…

基于IPV6带外BMC在中兴R5500G4服务器上安装ESXi7.0U3n

本文讲解通过IPV6方式从带外BMC在中兴R5500G4服务器上安装VMWare ESXi7.0U3n的过程。 一、安装环境 服务器&#xff1a; 中兴R5500G4服务器(2*16C/384GB MEM/2*480GB SSD/24*8TB SATA/12*960GB SSD/8*10Ge) ISO&#xff1a;VMware-VMvisor-Installer-7.0U3n-21930508.x86_64…

zabbix配置钉钉告警、和故障自愈

钉钉告警python脚本 cat python20 #!/usr/bin/python3 #coding:utf-8 import requests,json,sys,os,datetime # 机器人的Webhook地址 webhook"钉钉" usersys.argv[1] textsys.argv[3] data{"msgtype": "text","text": {"conten…

UniTask保姆级教程

目录 一、UniTask的简介和安装 https://github.com/Cysharp/UniTask.gitpathsrc/UniTask/Assets/Plugins/UniTask 空载性能测试 二、基础用法详解 三、基础用法扩展 四、进阶 五、VContainer简介 六、VContainer基础实例 方便快速查找 一、UniTask的简介和安装 项目地…

如何使用蚂蚁集团自动化混沌工程 ChaosMeta 做 OceanBase 攻防演练?

当前&#xff0c;业界主流的混沌工程项目基本只关注如何制造故障的问题&#xff0c;而经常做演练相关工作的工程师应该明白&#xff0c;每次演练时还会遇到以下痛点&#xff1a; 检测当前环境是否符合演练预设条件&#xff08;演练准入&#xff09;&#xff1b; 业务流量是否满…

第四章网关

文章目录 Gateway服务网关为什么需要网关gateway快速入门断言工厂过滤器工厂路由过滤器的种类默认过滤器全局过滤器自定义全局过滤器 过滤器执行顺序 跨域问题什么是跨域问题 Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 S…

基于3D数字孪生系统开展水环境治理与修复的功能特点

“小水滴”折射“大民生”&#xff0c;城市供水是极为重要的民生工程、民心工程。上海市委、市政府始终把提高城市供水安全韧性摆在突出位置&#xff0c;着力打造更加完善、更高质量的城市供水网络体系&#xff0c;夯实筑牢城市供水生命线&#xff0c;确保城市水安全。经过多年…

TFTP服务器,NFS服务器

一&#xff0c;安装tftp服务器 1&#xff0c;什么是tftp服务器&#xff1f; tftp服务器是通过网络&#xff0c;将ubuntu程序下载到开发板中 2&#xff0c;安装步骤 1&#xff0c;保证连接外网成功 2&#xff0c;安装tftp服务器 sudo apt-get install tftp-hpa tftpd-hpat…

算法笔记 近似最近邻查找(Approximate Nearest Neighbor Search,ANN)

1 介绍 精准最近邻搜索中数据维度一般较低&#xff0c;所以会采用穷举搜索&#xff0c;即在数据库中依次计算其中样本与所查询数据之间的距离&#xff0c;抽取出所计算出来的距离最小的样本即为所要查找的最近邻。 当数据量非常大的时候&#xff0c;搜索效率急剧下降。——>…

公共实训中心物联网技术应用实训室建设方案

一、概述 1.1专业背景 物联网&#xff08;Internet of Things&#xff09;被称为继计算机、互联网之后世界信息产业第三次浪潮&#xff0c;它并非一个全新的技术领域&#xff0c;而是现代信息技术发展到一定阶段后出现的一种聚合性应用与技术提升&#xff0c;是随着传感网、通…

百度低质量站点怎么办?解决百度低质量站点的方法和工具

百度低质量站点怎么恢复&#xff1f;这是许多网站主和运营人员在SEO优化过程中经常面临的一个问题。百度作为中国最大的搜索引擎&#xff0c;对于网站收录和排名具有至关重要的影响。然而&#xff0c;由于各种原因&#xff0c;有些网站可能面临被百度降权或收录减少的情况。那么…

Netty服务端启动的整体流程-基于源码4.1.96Final分析

Netty采用的是主从Reactor多线程的模型&#xff0c;参考Scalable IO in Java&#xff0c;但netty的subReactor为一个组 一、从FileServer服务器示例入手 public final class FileServer {static final boolean SSL System.getProperty("ssl") ! null;// Use the …

RHCA之路---EX280(4)

RHCA之路—EX280(4) 1. 题目 Use the S2I functionality of your OpenShift instance to build an application in the rome project Use the Git repository at http://services.lab.example.com/php-helloworld for the application source Use the Docker image labeled re…

栈(Stack)的详解

目录 1.栈的概念 2.栈的模拟实现 1.栈的方法 2.模拟栈用&#xff08;整型&#xff09;数组的形式呈现 2.1栈的创建 2.2压栈 2.3栈是否为空 2.4出栈 2.5获取栈中有效元素个数 2.6获取栈顶元素 2.7完整代码实现 1.栈的概念 从上图中可以看到&#xff0c; Stack 继承了…

vite+vue3+element-plus

vitevue3element-plus 1.开始 npm create vitelatest app -- --template vuenpm installlnpm run dev2.引入element-ui npm install element-plus修改main.js import ElementPlus from element-plus import element-plus/dist/index.css createApp(App).use(ElementPlus).m…

剑指 Offer 65. 不用加减乘除做加法(简单)

题目&#xff1a; class Solution { public:int add(int a, int b) {while(b){ //总体思路&#xff1a;每一次加法器结果a上一次产生的进位数*进制数本位数&#xff0c;进制数为0的时候直接返回本位数a即可int carry a&b; //计算进位a a^b; //计算…

NC后端扩展开发

前言 在日常的工作中&#xff0c;会遇到各种各样的需要进行扩展开发的需求&#xff0c;可以使用系统预留的扩展开发机制来实现&#xff0c;避免修改源码。因NC产品已迭代至BIP版本&#xff0c;所以前端扩展方式就再进行不赘述了&#xff0c;本文主要介绍后端扩展开发方式&…

docker使用(二)提交到dockerhub springboot制作镜像

docker使用&#xff08;二&#xff09; dockerhub创建账号创建存储库成功&#xff01;开始推送获取image名 提交成功SpringBoot项目制作Dockerfile镜像部署打jar包 dockerhub创建账号 &#xff08;自认为可以理解为github一类的东西&#xff09; 单击创建存储库按钮。 设定存…