Android:ViewAdapter

3.11 View&Adapter

View是视图文件,表示页面的框架结构。Adapter适配器,通过适配器填充数据信息。

1、简单ListView使用

    ListView用来显示一个相同样式的视图列表。

    ListView无法直接将数据显示,需要先将Data数据放入Adapter适配器,然后ListView绑定适配器。

操作步骤:

    1.在layout布局中创建ListView;

    2.在layout对应ActivityActivity中创建对应ListView对象listView;

    3.创建数据ArrayList<String>类型的list;

    4.创建ListViewAdapter类继承BaseAdapter,在Activity中创建ListViewAdapter类对象listViewAdapter,传入参数list,上下文;

    5.调用listView对象的setAdapter方法,绑定listViewAdapter;

示例:

创建t_listview.xml文件,ListView标签,设置id。

<?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"><ListViewandroid:id="@+id/ListView1"android:layout_width="match_parent"android:layout_height="match_parent"></ListView></LinearLayout>

创建ListViewAdapter类继承BaseAdapter类。

public class ListViewAdapter extends BaseAdapter {private ArrayList<String> strlists;private Context mContext;public  ListViewAdapter(ArrayList<String> list,Context context){this.strlists=list;this.mContext=context;}//获取list大小@Overridepublic int getCount() {return strlists.size();}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return position;}//创建空的View,放入数据//position当前位置//ViewGroup parent:每次调用都有一个空容器,返回值的view添加到空容器,getContext方法获取容器context//convertView:ItemView显示内容@Overridepublic View getView(int position, View convertView, ViewGroup parent) {//创建一个空TextViewTextView textView = new TextView(mContext);//设置宽高textView.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT,AbsListView.LayoutParams.WRAP_CONTENT));//设置文本大小textView.setTextSize(30);//设置文本textView.setText(strlists.get(position));return textView;}}

创建ListViewActivity类继承Activity。

public class ListViewActivity extends Activity {//上下文private Context mContext;private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//绑定layoutsetContentView(R.layout.t_listview);//上下文初始化mContext = ListViewActivity.this;//获取ListViewlistView = (ListView) findViewById(R.id.ListView1);//创建数据listArrayList<String> list = new ArrayList<String>();//添加数据for(int i=0;i<5;i++){list.add("listView"+i);}//创建ListViewAdapter对象ListViewAdapter listViewAdapter = new ListViewAdapter(list,mContext);//ListView绑定AdapterlistView.setAdapter(listViewAdapter);}}

2、BaseAdpater优化

1.使用LayoutInfalter优化

当ListView中的内容不是简单的字符串表时,ListViewAdpater类中的getView方法中就不是简单创建一个TextView可以解决问题,需要创建多个View组件,这个时候,我们需要根据ListView中子Item的结构自动生成View组件。

示例:

创建子Item的布局文件t_listview_item.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"><TextViewandroid:id="@+id/tv1"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="30dp"></TextView></LinearLayout>

修改getView方法中逻辑:

//LayoutInflater类将一个布局变成一个类LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());//inflate参数1:布局页面,参数2:root是否加入到某个容器View view =  layoutInflater.inflate(R.layout.t_listview_item,null);TextView textView = view.findViewById(R.id.tv1);textView.setText(strlists.get(position));return view;

Android提供一些固定的子Item布局:

示例:

//android提供了一些布局页面android.R.layout.XXXX//示例:android.R.layout.simple_list_item_1View view1= layoutInflater.inflate(android.R.layout.simple_list_item_1,null);

2.使用convertView优化

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

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

相关文章

企业飞书应用机器人,使用python自动发送文字内容到群消息

文章目录 创建企业应用与开通机器人飞书发送信息的工具函数 创建企业应用与开通机器人 需要先创建应用&#xff0c;然后进入应用后&#xff0c;点击添加应用能力创建机器人&#xff1a; 参考官方文档&#xff0c;获取两个参数&#xff1a;app_id与app_secret 官方说明文档&…

JAVA面试题12

Java 中的静态关键字&#xff08;static&#xff09;的作用是什么&#xff1f; 答案&#xff1a; 静态关键字可以修饰变量、方法和代码块。静态变量在类加载时创建&#xff0c;所有实例共享同一个副本。静态方法不依赖于实例&#xff0c;可以直接通过类名调用。静态代码块在类加…

django中实现登录

Django中实现登录功能&#xff0c;通常涉及以下几个步骤&#xff1a; 一&#xff1a;实现步骤 1&#xff1a;创建用户模型&#xff1a;Django自带了一个用户认证系统&#xff0c;通常使用内置的User模型来管理用户。你也可以根据需要自定义用户模型。 2&#xff1a;创建登录表…

【DC渗透系列】DC-4靶场

主机发现 arp-scan -l┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:6b:ed:27, IPv4: 192.168.100.251 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.100.1 00:50:56:c0:00:08 …

电力负荷预测 | 基于AE-LSTM的电力负荷预测(Python)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 电力负荷预测 | 基于AE-LSTM的电力负荷预测(Python) 基于AE-LSTM(自动编码器长短期记忆网络)的电力负荷预测是一种基于深度学习的方法,用于预测未来一段时间内的电力负荷需求。该方法结合了自动编码器和LSTM网…

【leetcode题解C++】39.组合总和 and 40.组合总和II and 131.分割回文串

39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重…

FastDFS安装并整合Openresty

FastDFS安装 一、环境--centos7二、FastDFS--tracker安装2.1.下载2.2.FastDFS安装环境2.3.安装FastDFS依赖libevent库2.4.安装libfastcommon2.5.安装 libserverframe 网络框架2.6.tracker编译安装2.7.文件安装位置介绍2.8.错误处理2.9.配置FastDFS跟踪器(Tracker)2.10.启动2.11…

MVC框架学习

大一的时候写过一个mvc框架的跑酷游戏&#xff0c;但是那时候基础不扎实&#xff0c;没学明白也没听懂。现在深入的学习一下 以下内容参考&#xff1a;MVC 模式 | 菜鸟教程 (runoob.com) MVC 模式 MVC 模式代表 Model-View-Controller&#xff08;模型-视图-控制器&#xff…

【DDD】学习笔记-数据分析模型

在 Eric Evans 提出领域驱动设计之前&#xff0c;对企业系统的分析设计多数采用数据模型驱动设计。如前所述&#xff0c;这种数据模型驱动设计就是站在数据的建模视角&#xff0c;逐步开展分析、设计与实现的建模过程。通过对数据的正确建模&#xff0c;设计人员就可以根据模型…

如何在Mac上允许主流浏览器使用弹出式窗口?这里有详细步骤

这篇文章教你如何关闭流行的Mac浏览器上的弹出窗口阻止程序,包括Safari、Chrome和Firefox。它还探讨了你可能希望这样做的原因及其影响。 如何在Mac上允许Safari使用弹出窗口 如果你经常在Mac上使用Safari,你会注意到默认情况下弹出窗口阻止程序是打开的。有时,这并不方便…

vim常用命令以及配置文件

layout: article title: “vim文本编译器” vim文本编辑器 有三种模式: 命令模式 文本模式, 末行模式 vim命令大全 - 知乎 (zhihu.com) 命令模式 插入 i: 切换到输入模式&#xff0c;在光标当前位置开始输入文本。 a: 进入插入模式&#xff0c;在光标下一个位置开始输入文…

springboot172基于springboot的二手车交易系统的设计与实现

二手车交易系统的设计与实现 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统二手车交易信息管理难度大&…

three.js 匀速动画(向量表示速度)

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div>1. 匀速动画(向量表示速度)</div…

4.1 Verilog 过程结构

关键词&#xff1a;initial&#xff0c; always 过程结构语句有 2 种&#xff0c;initial 与 always 语句。它们是行为级建模的 2 种基本语句。 一个模块中可以包含多个 initial 和 always 语句&#xff0c;但 2 种语句不能嵌套使用。 这些语句在模块间并行执行&#xff0c;…

[SAP ABAP] 创建Package

Package被称作包或开发类&#xff0c;能够存储所有SAP系统开发过程中的相关对象&#xff0c;方便进行管理和查询 我们可以通过Package实现其所包含的对象在不同服务器之间进行批量传输(通过请求号传输) 请求号是文件&#xff0c;用于记录所有对象的创建与修改记录 1.创建Packag…

嵌入式学习之Linux入门篇笔记——8,Linux帮助手册讲解

配套视频学习链接&#xff1a;http://【【北京迅为】嵌入式学习之Linux入门篇】 https://www.bilibili.com/video/BV1M7411m7wT/?p4&share_sourcecopy_web&vd_sourcea0ef2c4953d33a9260910aaea45eaec8 1.Linux 帮助手册 使用 man 命令打开&#xff0c;使用手册一共有…

Lombok 高级说明

优质博文&#xff1a;IT-BLOG-CN 一、痛点 【1】代码臃肿&#xff1a;POJO中的getter/setter/equals/hashcode/toString等&#xff1b; 【2】样板式代码&#xff1a;I/O流的关闭操作等&#xff1b; Lombok是一个可以通过注解简化Java代码开发的工具&#xff0c;能够在我们编…

个体诊所门诊电子处方开单管理系统软件,配方模板病历模板设置一键导入操作教程

个体诊所门诊电子处方开单管理系统软件&#xff0c;配方模板病历模板设置一键导入操作教程 一、前言 以下操作教程以 佳易王诊所电子处方软件V17.2为例说明&#xff0c;最新版V17.3下载可以点击最下方官网卡片了解。 1、在现实生活中&#xff0c;医师开单可谓是争分夺秒&…

十分钟学会WebSocket

WebSocket 简介 WebSocket 是一种在客户端和服务器之间实现双向通信的网络协议。它通过在单个 TCP 连接上提供全双工通信功能&#xff0c;使得服务器可以主动向客户端推送数据&#xff0c;而不需要客户端发起请求。 WebSocket 与 HTTP 的区别 与传统的 HTTP 协议相比&#x…

ArcGIS学习(四)坐标系-1

ArcGIS学习(四)坐标系 大家平时在处理数据的时候肯定经常遇到坐标系相关的问题。最常见的就是同一个地区的两个数据,导入ArcGIS内却对不上;也肯定听到过坐标系相关的一些词语,比如地理坐标系投影坐标系、投影、WGS1984坐标、CGCS2000坐标系、火星坐标系、百度坐标系等。 …