ListView 的簡單使用及 ArrayAdapter 中參數詳解

😄作者簡介: 小曾同學.com,一個致力于測試開發的博主??,主要職責:測試開發、CI/CD,日常還會涉及Android開發工作。
如果文章知識點有錯誤的地方,還請大家指正,讓我們一起學習,一起進步。
😊 座右銘:不想當開發的測試,不是一個好測試??。
熱衷分享,喜歡原創,如果覺得博主的文章還不錯的話,還請點贊、收藏哦!👍

文章目錄

  • 收獲
  • 一 說在前面
  • 二 ListView 的簡單使用
  • 三 Demo 展示

收獲

通過本篇文章您將了解到 ListView 的基本用法及能夠實現一段文本數據的縱向滑動,當然也會詳細的了解適配器ArrayAdapter 的具體使用。

一 說在前面

ListView 是 Android 中最常用的控件之一,幾乎所有的應用都會用到它,它是用來做什么的呢?由于手機屏幕空間比較有限,能一次性在屏幕上顯示的內容并不多,當我們的程序中有大量數據需要展示的時候,就需要ListView控件來實現滑動。比如我們翻看QQ、微信聊天列表、翻閱微博最新消息等。所以 ListView 是用來做滑動控件內容的。

二 ListView 的簡單使用

首先要在布局文件中增加 ListView 控件,屬性無非就是 id、寬、高這些,不做過多解釋。

<ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="match_parent">
</ListView>

在 MainActivity 中書寫邏輯代碼,首先我們把數據放在集合中,但是集合中的數據是無法直接傳遞給 ListView 的,我們需要借助適配器來完成,那么什么是適配器呢。可以查閱 Android 適配器這篇文章。

適配器是一種用于提供數據和管理視圖展示的組件,適配器充當數據源與顯示視圖之間的橋梁,它負責將數據轉換為適合顯示在用戶界面上的視圖,并將用戶界面上的操作反饋回數據源

邏輯代碼如下:

class MainActivity : AppCompatActivity() {//private val data = arrayOf("Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon")private val data = listOf("Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon","Apple","Banana","Orange","Watermelon")override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)enableEdgeToEdge()// 核心代碼setContentView(R.layout.activity_list_view)var listView: ListView = findViewById(R.id.listView)val adapter = ArrayAdapter(this,android.R.layout.simple_list_item_1,data)listView.adapter = adapter// 非透明狀態欄ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.listView)) { v, insets ->val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)insets}}
}

在 ArrayAdapter 的構造函數中依次傳入 Activity 的實例,ListView 子項布局的id,以及數據源,為什么是這三個參數呢?主要還是看 ArrayAdapter 源碼中的構造函數中的參數,具體代碼如下所示:

public ArrayAdapter(@NonNull Context context, int resource, @NonNull List<T> objects) {throw new RuntimeException("Stub!");}

在本文示例中,使用 android.R.layout.simple_list_item_1 作為 ListView 子項目布局的 id,這是一個 Android 內置的布局文件,里面只有一個 TextView ,可用于簡單地顯示一段文件。這樣適配器就構建好了。

最后,還需要調用 ListView 的 setAdapter() 方法,將構建好的適配器對象傳遞進去,這樣ListView和數據之間的關聯就建立完成了。

public void setAdapter(ListAdapter adapter) {throw new RuntimeException("Stub!");}

listView.adapter = adapter 是將適配器 adapter 設置為 ListView 控件的適配器,以便在 ListView 中顯示數據。適配器負責將數據源中的每個項與視圖進行綁定,并根據需要創建和重用視圖,以確保在列表中顯示正確的數據項。

三 Demo 展示

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41386.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41386.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41386.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【ARMv8/v9 GIC 系列 5.2 -- GIC 分組介紹:Group 0 |Group 1| Non-Secure Group 1】

請閱讀【ARM GICv3/v4 實戰學習 】 文章目錄 GIC Interrupt grouping中斷分組配置寄存器GIC 中斷分組介紹Group 0(安全組0)Group 1(安全組1)Non-Secure Group 1(非安全組1)總結及例子GIC Interrupt grouping ARM GICv3 通過中斷分組機制,與ARMv8異常模型和安全模型進行…

一文讓你徹底搞懂什么是CDN

一、引言 在當今互聯網時代&#xff0c;網站的加載速度和穩定性是用戶體驗的關鍵因素之一。而CDN&#xff08;Content Delivery Network&#xff0c;內容分發網絡&#xff09;作為提升網站性能的重要技術手段&#xff0c;受到了廣泛的關注和應用。本篇博客將深入探討CDN的工作…

實現原理:遠程過程調用(RPC)

Hi~&#xff01;這里是奮斗的小羊&#xff0c;很榮幸您能閱讀我的文章&#xff0c;誠請評論指點&#xff0c;歡迎歡迎 ~~ &#x1f4a5;&#x1f4a5;個人主頁&#xff1a;奮斗的小羊 &#x1f4a5;&#x1f4a5;所屬專欄&#xff1a;C語言 &#x1f680;本系列文章為個人學習…

墨烯的C語言技術棧-C語言基礎-006

六.常量 C語言的常量為 字面常量 const修飾的常變量 #define定義的 枚舉常量 int main() { // 四個都是字面常量 30; 3.14; "w"; // 字符常量 "abc"; // const修飾的常變量 const int a 10; // 在C語言中,const修飾的a,本質是變量,但不能直…

圖像的灰度直方圖

先來認識一下灰度直方圖&#xff0c;灰度直方圖是圖像灰度級的函數&#xff0c;用來描述每個灰度級在圖像矩陣中的像素個數或者占有率。接下來使用程序實現直方圖&#xff1a; 首先導入所需的程序包&#xff1a; In [ ]: import cv2 import numpy as np import matplotlib…

PCA算法降維代碼示例

這段代碼將數據進行PCA降維至3維&#xff0c;并繪制一個三維散點圖&#xff0c;展示降維后的前3個主成分。 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.decomposition import PCA from sklearn.preprocessing import StandardS…

JAVA 發送短信信息工具類(騰訊云)

發送短信信息工具類 import cn.hutool.core.collection.CollUtil; import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.exception.TencentCloudSDKException; import com.tencentcloudapi.sms.v20210111.SmsClient; import com.tencentcloudapi…

pyecharts可視化案例大全(21~30)

pyecharts可視化案例大全(21~30) 二十一、直方圖帶標記線(最大值,平均值等)二十二、折線圖帶自定義標記點二十三、折線圖帶百分號顯示二十四、象形圖自定義圖形二十五、水球圖自定義圖形二十六、GEO添加自定義坐標二十七、GEO 帶漣漪效果散點圖二十八、GEO熱力圖二十九、GEO…

關于一致性哈希

什么是一致性哈希&#xff1f; 定義和基本原理 一致性哈希&#xff08;Consistent Hashing&#xff09;是一種哈希算法&#xff0c;廣泛應用于分布式系統中&#xff0c;主要用于解決動態節點變化&#xff08;如節點增加或減少&#xff09;時的數據分布和負載均衡問題。 定義…

基于Java中的SSM框架實現野生動物公益保護系統項目【項目源碼+論文說明】計算機畢業設計

基于Java中的SSM框架實現野生動物公益保護系統演示 摘要 本系統按照網站系統設計的基本流程&#xff0c;遵循系統開發生命周期法和結構化方法&#xff0c;基于Java語言設計并實現了野生動物公益保護系統。該系統基于瀏覽器/服務器模式&#xff0c;采用JSP技術&#xff0c;后臺…

MySQL之備份與恢復(六)

備份與恢復 文件系統快照 先決條件和配置 創建一個快照的消耗幾乎微不足道&#xff0c;但還是需要確保系統配置可以讓你獲取在備份瞬間的所有需要的文件的一致性副本。首先&#xff0c;確保系統滿足下面這些條件。 1.所有的InnoDB文件(InnoDB的表空間文件和InnoDB的事務日志…

C++學習第十三天——stack/queue的使用及底層剖析雙端隊列容器適配器

? 少年的旅途應是星辰大海 &#x1f30f; &#x1f4c3;個人主頁&#xff1a;island1314 &#x1f525;個人專欄&#xff1a;C學習 &#x1f680; 歡迎關注&#xff1a;&#x1f44d;點贊 &#x1f442;&am…

學會python——用python制作一個繪圖板(python實例十九)

目錄 1.認識Python 2.環境與工具 2.1 python環境 2.2 Visual Studio Code編譯 3.制作一個繪圖板 3.1 代碼構思 3.2 代碼實例 3.3 運行結果 4.總結 1.認識Python Python 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。 Python 的設計具有很強的可…

昇思25天學習打卡營第12天| 基于MindNLP+MusicGen生成自己的個性化音樂

之前都是看圖文類的東西&#xff0c;今天體驗一點不一樣的。來點聽力的內容。 mindspore有音樂生成模型MusicGen&#xff0c;MusicGen支持兩種生成模式&#xff1a;貪心&#xff08;greedy&#xff09;和采樣&#xff08;sampling&#xff09;。在實際執行過程中&#xff0c;采…

京東金融大數據分析平臺總體架構:剖析和解讀

京東金融大數據分析平臺總體架構&#xff1a;剖析和解讀 在現代金融行業中&#xff0c;大數據分析已成為決策支持和業務創新的重要工具。京東金融憑借其強大的大數據分析平臺&#xff0c;成功地將海量數據轉化為洞察力&#xff0c;為企業和用戶提供優質服務。本文將深入探討京…

代碼隨想錄訓練營第二十九天 134加油站 135分發糖果 860檸檬水找零 406根據身高重建隊列

第一題&#xff1a; 原題鏈接&#xff1a;134. 加油站 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 需要三個變量&#xff0c;一個變量start記錄結果也就是出發的第一個加油站&#xff0c;一個變量curSum來記錄此時加油耗油后剩余的油量&#xff0c;如果發現c…

微前端的需求有哪些?微前端的原理是怎么樣的?為什么這么設計,及微前端的應用場景是什么?對有些客戶,前端的重要性高于后端

微前端&#xff08;Micro Frontends&#xff09;是將前端應用拆分成多個獨立、可部署的部分&#xff0c;每個部分可以由不同的團隊獨立開發、測試、部署和維護。這種架構類似于微服務在后端的應用&#xff0c;是為了應對復雜前端應用的維護和擴展問題而提出的。 來龍去脈 背景…

【吳恩達機器學習-week2】可選實驗:使用 Scikit-Learn 進行線性回歸

支持我的工作 &#x1f389; &#x1f4c3;親愛的朋友們&#xff0c;感謝你們一直以來對我的關注和支持&#xff01; &#x1f4aa;&#x1f3fb; 為了提供更優質的內容和更有趣的創作&#xff0c;我付出了大量的時間和精力。如果你覺得我的內容對你有幫助或帶來了歡樂&#xf…

庫表設計(基礎)-實體與設計關系

實體關系分析 1 實體關系是指系統事務之間的聯系。 2 實體關系需要雙向分析。 3 實體關系決定表關系。 實體關系的種類 1 一對一 2 一對多 3 多對多 舉例&#xff1a; 上面關系如下&#xff1a; 班級和學生 &#xff1a; 1:N 學生和課程&#xff1a;N : N 學生和學籍檔案&a…

MISRA C 和MISRA C++:汽車軟件安全的守護者

一、MISRA C與C語言 自1972年Dennis MacAlistair Ritchie在美國貝爾實驗室創造C語言以來&#xff0c;它已成為當今最流行的編程語言之一。C語言以其使用的靈活性、功能的豐富性而廣受歡迎&#xff0c;但同時也因其寬松的語法和不嚴格的數據類型給開發的產品帶來了安全隱患。 …