😄作者簡介: 小曾同學.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 中顯示數據。適配器負責將數據源中的每個項與視圖進行綁定,并根據需要創建和重用視圖,以確保在列表中顯示正確的數據項。