当前位置: 首页 > news >正文

源代码如何做网站/网站推广怎么做

源代码如何做网站,网站推广怎么做,网站系统怎么做,欧洲ip地址认识适配器 在学完并且在做了一个自主项目后,我对适配器有了以下认识:1. 适配器的作用: 数据驱动的动态页面列表渲染,所以适配器主要就做了两件事:遍历数据,渲染页面(列表项)。比…

认识适配器

在学完并且在做了一个自主项目后,我对适配器有了以下认识:
1. 适配器的作用:
    数据驱动的动态页面列表渲染,所以适配器主要就做了两件事:遍历数据,渲染页面(列表项)。比如我们常见的订单列表,每一项订单项样式是相同的,而订单数据不同。
2. 适配器的参数:
    大部分都是需要我们继承自定义去实现适配器,除非你仅仅用于展示数据不用做任何复杂数据样式和数据交互的列表项。既然是自定义适配器,那么实例化参数就是我们自己定义了,那么适配器参数需要什么呢?
    其一,你在哪个页面使用适配器(这个其实就叫context);
    其二,你要遍历渲染的数据,列表项数据(一般都是List<Object>类型)
    其三:渲染的列表项布局,在android studio中布局页面都是全局的可引用的(R.layout.my_list_item),所以可以不用作为实例化适配器参数。
    其他:其他呢就没了,准确来说是必要的没了,那么其他参数无非是结合具体业务逻辑来决定。
3. 如何使用适配器
    其一:适配器的使用对象,即我的哪个页面的哪个地方(列表组件)需要使用适配器。
    其二:创建适配器对象,适配器需要哪些参数。
    其三:设置适配器,为使用对象设置适配器。
4. 刷新页面列表项
    数据常指变量,也就是说数据是变化的,那么我们就有需求:更改数据后,及时地自动进行页面数据刷新。
    页面为什么要刷新,因为数据变了,所以拿到最新数据,再重新创建或更新适配器对象,然后重设置适配器就好了。

BaseAdapter

结构

public abstract class BaseAdapter

extends Object implements ListAdapter SpinnerAdapter

        

java.lang.Object

android.widget.BaseAdapter

直接子类

         ArrayAdapter<T>, CursorAdapter, SimpleAdapter

间接子类

        ResourceCursorAdapter, SimpleCursorAdapter

简要

描述

    一个抽象类,是各种适配器的基础,它为简单的列表提供了基本的实现,但也可以根据需要进行定制。
可作用于的页面控件
    ListView:用于显示垂直滚动的单列数据列表。
    GridView:用于显示网格布局的数据列表,支持水平和垂直滚动。
    Spinner:下拉选择框,可通过BaseAdapter来自定义下拉选项的样式和数据。
    ExpandableListView:可展开的列表视图,用于显示具有层次结构的数据列表。
需要重写的方法

    getCount、getItem、getItemId、getView

重写方法说明

int getCount()
    获取传入数据的长度
Object getItem(int i)
    根据索引获取指定的数据项
long getItemId(int i)
    如果结合数据库的话就是获取对应的记录id了,不结合数据库就是获取数据项的索引
View getView(int i, View view, ViewGroup viewGroup)
    数据索引可以获取当前列表项数据,然后可以开始结合数据构建具体的列表项视图。

代码示例
private class MyAdapter extends BaseAdapter{private Context context;private List<String> goodTitles;private LayoutInflater layoutInflater;public MyAdapter(Context context, List<String> goodTitles){this.context = context;this.goodTitles = goodTitles;this.layoutInflater = LayoutInflater.from(context);}@Overridepublic int getCount() {return goodTitles.length;}@Overridepublic Object getItem(int i) {return goodTitles[i];}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {View itemView = layoutInflater.inflate(MainActivity.this,R.layout.items,null);goodTitle = itemView.findViewById(R.id.title);goodImg = itemView.findViewById(R.id.img);goodPrice = itemView.findViewById(R.id.price);goodTitle.setText(goodTitles[i]);goodImg.setBackgroundResource(goodImgs[i]);goodPrice.setText(""+goodPrices[i]);return itemView;}
}
优化getView
// 优化getView的原因主要是避免列表项视图的重复构建@Override
public View getView(int i, View view, ViewGroup viewGroup) {MyHolder myHolder = null;if(view == null){view = View.inflate(MainActivity.this,R.layout.items,null);MyHolder = new ViewHolder(view);view.setTag(myHolder);}else{myHolder = (ViewHolder) view.getTag();}myHolder.goodTitle.setText(goodTitles[i]);myHolder.goodImage.setBackgroundResource(goodImgs[i]);myHolder.goodPrice.setText(""+goodPrices[i]);return view;
}class MyHolder{TextView goodTitle;ImageView goodImage;TextView goodPrice;public MyHolder(View view){this.goodTitle = view.findViewById(R.id.title);this.goodImage = view.findViewById(R.id.img);this.goodPrice = view.findViewById(R.id.price);}
}

 SimpleAdapter

简要

继承自BaseAdapter,实现了BaseAdapter的抽象方法,可以实例化直接使用。
public SimpleAdapter(Context context,
                    List<?extends Map<String,?>> data,
                    int resource,
                    String[] from,
                    int[] to
                    )

context:上下文对象,用于访问应用程序资源。
data:数据源,它通常是一个包含 Map 对象的列表,每个 Map 对象表示一条数据。
resource:用于指定列表项的布局资源 ID。
from:用于指定数据中的键名,表示要展示在布局中的数据项。

to:用于指定布局中的视图资源 ID,表示数据应该展示在布局中的哪个视图上。


可作用于的控件ListView、GridView、Spinner

代码示例
// 下面是一个简单示例,它将一组数据适配到ListView中进行展示public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 准备数据源,这里使用 List<Map<String, Object>> 形式List<Map<String, Object>> dataList = new ArrayList<>();Map<String, Object> data1 = new HashMap<>();data1.put("name", "Alice");data1.put("age", 20);Map<String, Object> data2 = new HashMap<>();data2.put("name", "Bob");data2.put("age", 25);dataList.add(data1);dataList.add(data2);// 指定数据对应的 keyString[] from = {"name", "age"};// 指定数据展示的视图资源 IDint[] to = {R.id.text_name, R.id.text_age};// 创建 SimpleAdapterSimpleAdapter simpleAdapter = new SimpleAdapter(this, dataList,R.layout.list_item, from, to);// 获取 ListViewListView listView = findViewById(R.id.list_view);listView.setAdapter(simpleAdapter);}
}

ArrayAdapter

简要

简述:
    继承自BaseAdapter,可以直接实例化使用,该适配器有个重要的特点就是数据源单一,意味着ArrayAdapter只能渲染列表项单一的控件。
    
ArrayAdapter的构造函数通常包含以下参数:
    Context:上下文对象,用于访问应用程序资源。
    int:用于指定列表项的布局资源 ID。
    T[] 或 List<T>:数据源,可以是数组或列表形式的数据集合。

代码示例
List<String> dataList = new ArrayList<>(Arrays.asList("Apple", "Banana", "Cherry"));
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,dataList
);
ListView listView = findViewById(R.id.list_view);
listView.setAdapter(adapter);

 CursorAdapter

感觉就是省略了遍历Cursor对象的步骤,没什么大用,还不如用BaseAdapter实现,二者实现代码量差别不大,而且后者更灵活。所以这里就不介绍CursorAdapter了。

RecyclerView.Adapter

简要

    RecyclerView.Adapter 是用于将数据适配到 RecyclerView中进行展示的适配器类。它是 页面控件RecyclerView的一个重要组成部分,用于管理数据与视图之间的绑定,并帮助实现高级的列表和网格布局效果。相比于传统的 ListView,RecyclerView 提供了更高度的灵活性和定制性。
    RecyclerView.Adapter 是一个抽象类,你需要继承它并实现一系列必要的方法来管理数据与视图的绑定过程。

代码示例
// 这个<RecyclerViewAdapter.ViewHolder>指定了以ViewHolder作为泛型类型参数,用于指定ViewHolder的类型
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {private List<String> dataList;public RecyclerViewAdapter(List<String> dataList) {this.dataList = dataList;}@NonNull@Overridepublic ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);return new ViewHolder(view);}@Overridepublic void onBindViewHolder(@NonNull ViewHolder holder, int position) {String data = dataList.get(position);holder.textView.setText(data);}@Overridepublic int getItemCount() {return dataList.size();}public static class ViewHolder extends RecyclerView.ViewHolder {TextView textView;public ViewHolder(View itemView) {super(itemView);textView = itemView.findViewById(R.id.text_view);}}
}

相关文章:

Android Studio(适配器Adapter)

认识适配器 在学完并且在做了一个自主项目后&#xff0c;我对适配器有了以下认识&#xff1a;1. 适配器的作用&#xff1a; 数据驱动的动态页面列表渲染&#xff0c;所以适配器主要就做了两件事&#xff1a;遍历数据&#xff0c;渲染页面&#xff08;列表项&#xff09;。比…...

携程AI布局:三重创新引领旅游行业智能化升级

2023年10月24日&#xff0c;携程全球合作伙伴峰会在新加坡召开&#xff0c;携程集团联合创始人、董事局主席梁建章做了名为《旅游业是独一无二的最好的行业》的演讲&#xff0c;梁建章在演讲中宣布了携程生成式 AI、内容榜单、ESG 低碳酒店标准三重创新的战略方向。这些创新将为…...

IOS手机耗电量测试

1. 耗电量原始测试方法 1.1 方法原理&#xff1a; 根据iPhone手机右上角的电池百分比变化来计算耗电量。 1.2实际操作&#xff1a; 在iOS通用设置中打开电池百分比数值显示&#xff0c;然后操作30分钟&#xff0c;60分钟&#xff0c;90分钟&#xff0c;看开始时和结束时电池…...

LeetCode.6 N字形变换

一开始想的是真的创建一个数组 去按照题目所给的要求填入数据 最后输出不为空的数组项 但是不仅时间复杂度高 而且错误频繁出现 最终也没有提交成功 查阅题解后发现数组并不重要 假设我们忽略掉数组中的那些空白项 最终输出的结果就是numRows行的字符串的拼接 string conver…...

BlockingQueue实现简易消息队列处理器 可分区顺序消费

...

第一章 03Java入门-编写第一个Java程序HelloWorld以及JVM、JDK和JRE概念

文章目录 前言一、下载和安装JDK二、第一个程序HelloWorld1.用记事本编写程序2.编译文件3.运行程序三、HelloWorld案例常见问题四、环境变量五、Notepad软件的安装和使用六、Java语言的发展七、Java为什么这么火八、JRE和JDK总结前言 上次我们学习了常见的CMD指令以及环境变量…...

windbg的常见调试命令

windbg的常见调试命令 1&#xff09;.break&#xff1a;在指定的条件下停止调试。 2&#xff09;.bt&#xff1a;显示调用堆栈信息。 3&#xff09;.catch&#xff1a;设置异常捕获&#xff0c;可以用来捕获程序中的异常并进行调试。 4&#xff09;.continue&#xff1a;继续执…...

VBA之正则表达式(44)-- 拆分商品和规格

实例需求&#xff1a;商品组清单保存在A列中&#xff0c;现需要将其拆分为商品名称&#xff0c;保存在从B列开始的后续单元格中&#xff0c;部分商品包含规格&#xff0c;并且多种规格属性使用了逗号分隔&#xff0c;因此无法直接使用Excel分列功能完成数据拆分。 示例代码如下…...

听GPT 讲Rust源代码--library/std(13)

题图来自 Decoding Rust: Everything You Need to Know About the Programming Language[1] File: rust/library/std/src/os/horizon/raw.rs 在Rust源代码中&#xff0c;rust/library/std/src/os/horizon/raw.rs这个文件的作用是为Rust的标准库提供与Horizon操作系统相关的原始…...

计算机视觉任务图像预处理之去除图像中的背景区域-------使用连通域分析算法(包含完整代码)

原理 通过连通域分析算法能够找到最大的连通域&#xff0c;即图片的主体部分&#xff0c;然后保存该连通域的最小外接矩阵&#xff0c;即可去除掉无关的背景区域 代码 使用连通域分析算法去除图像中的空白部分 并将图像变为统一大小的正方形 from skimage import measure imp…...

SurfaceFlinger的硬件Vsync深入分析-千里马android framework车机手机系统开发

背景&#xff1a; 学过或者你看过surfaceflinger相关文章同学都知道&#xff0c;vsync其实都是由surfaceflinger软件层面进行模拟的&#xff0c;但是软件模拟有可能会有误差或偏差&#xff0c;这个时候就需要有个硬件vsync帮忙校准。 故才会在surfaceflinger的systrace出现如下…...

力扣160. 相交链表

目录 1.解题思路2.代码实现 1.解题思路 首先分析&#xff0c;如果两个链表的长度不一&#xff0c;假设他们有交点&#xff0c;那么他们的最后一定是相同的&#xff0c;也即是后面为相同的部分&#xff0c;但前面不好说&#xff0c;而又因为长度不一又没法简便的一一对比&#…...

操作系统学习与思考

x86体系架构 x86是因特尔8086代芯片的CPU总线位数以及寄存器种类的规范&#xff0c;大部分操作系统都是以该规范作为基准来生产的 计算机组成 CPU&#xff0c;可以根据程序计数器进行取指令操作&#xff0c;并根据指令执行运算&#xff08;加、减、乘、除&#xff09;。运算所…...

C++笔记之动态数组的申请和手动实现一个简单的vector

C笔记之动态数组的申请和手动实现一个简单的vector code review! 文章目录 C笔记之动态数组的申请和手动实现一个简单的vector1.C语言中动态数组的申请与使用1.动态数组的申请使用new和delete使用std::vector 1.std::vector的底层实现2.手动实现一个简单的vector:使用一个指向…...

答题测评考试小程序的效果如何

在线答题系统是一种在线练习、考试、测评的智能答题系统&#xff0c;适用于企业培训、测评考试、知识竞赛、模拟考试等场景&#xff0c;管理员可任意组题、随机出题&#xff0c;答题者成功提交后&#xff0c;系统自动判分。 多种题目类型&#xff0c;两种答题模式 练习模式&a…...

树上贪心+生成树贪心:1104T3

<47.92.197.167:5283/contest/425/problem/3> 根据 n n n 奇偶性可以推断答案 合法解只需要在任何一棵生成树上构造即可 贪心肯定要在最大生成树上 然后从前往后看一条未选的边能不能选即可 #include<bits/stdc.h> using namespace std; #ifdef LOCAL#define …...

MySQL进阶之性能优化与调优技巧

数据库开发-MySQL 1. 多表查询1.1 概述1.1.2 介绍1.1.3 分类 1.2 内连接1.3 外连接1.4 子查询1.4.1 介绍1.4.2 标量子查询1.4.3 列子查询1.4.4 行子查询1.4.5 表子查询 2. 事务2.1 介绍2.2 操作2.3 四大特性 3. 索引3.1 介绍3.2 结构3.3 语法 1. 多表查询 1.1 概述 1.1.2 介绍…...

MySQL EXPLAIN查看执行计划

MySQL 执⾏计划是 MySQL 查询优化器分析 SQL 查询时⽣成的⼀份详细计划&#xff0c;包括表如何连 接、是否⾛索引、表扫描⾏数等。通过这份执⾏计划&#xff0c;我们可以分析这条 SQL 查询中存在的 问题&#xff08;如是否出现全表扫描&#xff09;&#xff0c;从⽽进⾏针对优化…...

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】机器视觉(最终篇)

目录 知识储备 杂散光 结构光 ■ 被动测距 ■ 主动结构光 图像分类技巧 增强...

redis教程 二 redis客户端Jedis使用

文章目录 Redis的Java客户端-JedisJedis快速入门创建工程&#xff1a;引入依赖&#xff1a;建立连接测试&#xff1a;释放资源Jedis连接池创建Jedis的连接池改造原始代码 Redis的Java客户端-SpringDataRedis快速入门导入pom坐标配置文件测试代码 数据序列化器StringRedisTempla…...

【数据开发】大数据平台架构,Hive / THive介绍

1、大数据引擎 大数据引擎是用于处理大规模数据的软件系统&#xff0c; 常用的大数据引擎包括Hadoop、Spark、Hive、Pig、Flink、Storm等。 其中&#xff0c;Hive是一种基于Hadoop的数据仓库工具&#xff0c;可以将结构化的数据映射到Hadoop的分布式文件系统上&#xff0c;并提…...

SOEM源码解析——ecx_init_context(初始化句柄)

0 工具准备 1.SOEM-master-1.4.0源码1 ecx_init_context函数总览 /*** @brief 初始化句柄* @param context 句柄*/ void ecx_init_context(ecx_contextt *context) {int lp;*(context->slavecount) = 0;/* clean ec_slave array */...

11.Z-Stack协议栈使用

f8wConfig.cfg文件 选择信道、设置PAN ID 选择信道 #define DEFAULT_CHANLIST 0x00000800 DEFAULT_CHANLIST 表明Zigbee模块要工作的网络&#xff0c;当有多个信道参数值进行或操作之后&#xff0c;把结果作为 DEFAULT_CHANLIST值 对于路由器、终端、协调器的意义&#xff1…...

设计模式—结构型模式之适配器模式

设计模式—结构型模式之适配器模式 将一个接口转换成客户希望的另一个接口&#xff0c;适配器模式使接口不兼容的那些类可以一起工作&#xff0c;适配器模式分为类结构型模式&#xff08;继承&#xff09;和对象结构型模式&#xff08;组合&#xff09;两种&#xff0c;前者&a…...

【LeetCode】187. 重复的DNA序列

187. 重复的DNA序列 难度&#xff1a;中等 题目 DNA序列 由一系列核苷酸组成&#xff0c;缩写为 A, C, G 和 T.。 例如&#xff0c;"ACGAATTCCG" 是一个 DNA序列 。 在研究 DNA 时&#xff0c;识别 DNA 中的重复序列非常有用。 给定一个表示 DNA序列 的字符串 …...

C++17中std::any的使用

类sdk:any提供类型安全的容器来存储任何类型的单个值。通俗地说&#xff0c;std::any是一个容器&#xff0c;可以在其中存储任何值(或用户数据)&#xff0c;而无需担心类型安全。void*的功能有限&#xff0c;仅存储指针类型&#xff0c;被视为不安全模式。std::any可以被视为vo…...

携手ChainGPT 人工智能基础设施 波场TRON革新 Web3 版图

近日,波场TRON与 Web3 人工智能基础设施服务商 ChainGPT 正式达成合作。通过本次合作,双方将进一步推动人工智能和区块链技术的融合,在实现优势互补的同时,真正惠及日常生活。 作为一站式的加密AI中心,ChainGPT 的人工智能工具需要进行大量计算,能耗高,而波场TRON采用的创新型…...

pdfH5实现pdf预览功能

1.引入 npm install pdfh5 2.使用 <view id"pdfBox" class""></view> showPdf(url) {this.pdfh5 new Pdfh5("", {URIenable: false,zoomEnanle: true,maxZoom: 2,pdfurl: url})this.pdfh5.on("complete", function(st…...

Redis的持久化机制

多级缓存使用到了一个装饰设计模式&#xff1a;相当于我不影响我之前缓存本身的代码&#xff0c;但是我可以对我的缓存去做增强&#xff0c;因此多级缓存就是采用装饰模式去实现的~&#xff01; 多级缓存可以采用装饰模式去重构~&#xff01; Redis当中的持久化机制&#xff…...

mac装不了python3.7.6

今天发现一个很奇怪的问题 但是我一换成 conda create -n DCA python3.8.12就是成功的 这个就很奇怪...