使用SimpleAdapter創(chuàng)建ListView

ArrayAdapter的功能比較有限脆霎,他的列表項只能是TextView袁梗,如果開發(fā)實現(xiàn)需要更加復(fù)雜的列表項细燎,則可以考慮SimpleAdapter
首先定義一個ListView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="horizontal">
 <ListView
     android:id="@+id/mylist"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     />

</LinearLayout>

該listView將顯示simpleAdapter提供的列表項
下面是Activity代碼:

package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
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 MainActivity extends AppCompatActivity {
    private String[] names=new String[]{"虎頭","弄玉","李清照","李白"};
    private String[] descs=new  String[]{"可愛的小孩","一個擅長音樂的女孩","一個擅長文學(xué)的女性","一個小魯班的巴巴"};
    private int [] imageIds=new int[]{R.drawable.tx,R.drawable.tx,R.drawable.tx,R.drawable.tx};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //創(chuàng)建一個list集合适滓,list集合的元素是map
        List<Map<String,Object>> listItems=new ArrayList<>();
        for (int i=0;i<names.length;i++)
        {
            Map<String,Object> listItem=new HashMap<>();
            listItem.put("header",imageIds[i]);
            listItem.put("personName",names[i]);
            listItem.put("desc",descs[i]);
            listItems.add(listItem);
        }
     //創(chuàng)建一個SimpleAdapter
        SimpleAdapter simpleAdapter =new SimpleAdapter(this,listItems,R.layout.simple_item,new String[]{"personName","header","desc"},new int[]{R.id.name,R.id.header,R.id.desc});
        ListView list=findViewById(R.id.mylist);
        //為ListView設(shè)置Adapter
        list.setAdapter(simpleAdapter);
    }
}

simpleAdapter需要個參數(shù)
第一個this
第二個參數(shù):該參數(shù)應(yīng)該是一個List<?extends Map<String,?>>類型的集合對象,該集合中每個Map<String,?>對象生成一個列表項钠怯。
第三個參數(shù):該參數(shù)是個布局id佳魔。該。xml文件作為列表項組件晦炊。
第四個參數(shù):該參數(shù)是個String【】類型的參數(shù)鞠鲜,該參數(shù)取決定提取Map<String,?>對象中那些key對應(yīng)的value來生成列表項
第五個參數(shù):該參數(shù)應(yīng)該是一個int【】類型的參數(shù)宁脊,該參數(shù)決定補(bǔ)充那些組件
從上面的程序看。listItems是一個長度為4的集合贤姆,這就意味著它生成的ListView將會包含4個列表項榆苞,每個列表項都是R.layout.simple_item對應(yīng)的組件(也就是一個LinearLayout組件)。LinearLayout中包含了3個組件霞捡,這些組件內(nèi)容由listItems集合提供坐漏。
R.layout.simple.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="horizontal">
    //定義一個ImageView,用于作為列表項的一部分
    <ImageView
        android:id="@+id/header"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="10dp"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="10dp"
            android:textColor="#f0f"
            android:textSize="20dp"/>
        <TextView
            android:id="@+id/desc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="10dp"
            android:textSize="14dp"/>
    </LinearLayout>
</LinearLayout>

效果圖:


image.png

知識拓展:
設(shè)置監(jiān)聽用戶點擊碧信,通過AdapterView的setOnItemClickListener()方法
在activity中加入如下代碼監(jiān)聽

 list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Log.i("111",names[position]+"被選中了");
            }
image.png

這里小編遇到一個報錯就是log提示不存在
其實Log已經(jīng)報紅了赊琳,蠻嘗試下運行(快捷鍵shift+F10)下,就會看到報錯信息音婶,其實很簡單的問題,就是忘記導(dǎo)包了慨畸!

添加:

import android.util.Log;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市衣式,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌檐什,老刑警劉巖碴卧,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乃正,居然都是意外死亡住册,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門瓮具,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荧飞,“玉大人,你說我怎么就攤上這事名党√纠” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵传睹,是天一觀的道長耳幢。 經(jīng)常有香客問我,道長欧啤,這世上最難降的妖魔是什么睛藻? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮邢隧,結(jié)果婚禮上店印,老公的妹妹穿的比我還像新娘。我一直安慰自己倒慧,他們只是感情好按摘,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布包券。 她就那樣靜靜地躺著,像睡著了一般院峡。 火紅的嫁衣襯著肌膚如雪兴使。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天照激,我揣著相機(jī)與錄音发魄,去河邊找鬼。 笑死俩垃,一個胖子當(dāng)著我的面吹牛励幼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播口柳,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼苹粟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了跃闹?” 一聲冷哼從身側(cè)響起嵌削,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎望艺,沒想到半個月后苛秕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡找默,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年艇劫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惩激。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡店煞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出风钻,到底是詐尸還是另有隱情顷蟀,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布魄咕,位于F島的核電站衩椒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏哮兰。R本人自食惡果不足惜毛萌,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喝滞。 院中可真熱鬧阁将,春花似錦、人聲如沸右遭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吹榴,卻和暖如春亭敢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背图筹。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工帅刀, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人远剩。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓扣溺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瓜晤。 傳聞我的和親對象是個殘疾皇子锥余,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355