Android-ListView-SimpleAdapter


我在上一篇博客中Android-動態添加控件到ScrollView,寫到可以用Java動態添加控件到Scrollview的孩子LinearLayout里面去,這種方式是不合理的,因為這種方式是一次性把數據全部加載完成了

 

在Android中就提供了專門列表顯示條目的控件,ListView控件,ListView控件不是一次性加載全部數據,他是只加載用戶在屏幕看得到的數據,當用戶滑動的過程中在去加載新的數據,同時會自動銷毀之前加載過的數據

 

什么時候使用ListView ?

答:當很多條目Item,顯示都內容不同,數據不同,但是存放的位置是相似的,並且動態變化的條目Item(和數據),就可以用ListView

 

ListView的使用:

1.在布局中定義ListVIew

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

    <!-- 定義ListView -->
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>

</RelativeLayout>

 

2.在Java代碼中找到ListVIew,再設置適配器 setAdapter(ListAdapter的子類)

 


 

 適配器 ArrayAdapter和SimpleAdapter 對比介紹:

ArrayAdapter適配器是數組適配器,只能去適配展示很簡單的格局,只能展示條目Item的一個控件

SimpleAdapter適配器是好用適配器,可以展示比ArrayAdapter復雜一些到格局,可以展示一個條目Item的多個控件

 ListAdapter是SimpleAdapter的父類:

 

 

ListVIew + ArrayAdapter:

package liudeli.ui.all;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ListViewActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listview);

        ListView listView = findViewById(R.id.listview);

        List<Map<String, String>> list = new ArrayList<>();
        for (int i=0; i< 60; i++) {
            Map<String, String> map = new HashMap<>();
            map.put("id", "編號" + i +1);
            map.put("name", "藝名" + i + 100);
            list.add(map);
        }


        // 使用SimpleAdapter適配器
        ListAdapter listAdapter =
                new SimpleAdapter(this, // 上下文
                                  list,         // 數據
                                  android.R.layout.simple_list_item_2, // 使用系統的布局
                                  new String[]{"id", "name"}, // 設置Map的key,數據從哪里來
                                  new int[]{android.R.id.text1, android.R.id.text2}); // 系統布局的兩個控件ID,數據設置到那里去

        // 把適配器給ListView
        listView.setAdapter(listAdapter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
}

 

展示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM