亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

ListView的Adapter使用(綁定數據) 之 自定義每一項的布局去綁定數據

2020-04-11 12:15:10
字體:
來源:轉載
供稿:網友
大家先看第一個例子顯示:

這個界面相信大家都看到過的,這次比上一個例子多的是ListView 的每一項綁定的是不再是單純的一個字符串了,ListView 的每一個條目我們需要顯示兩個信息,編號和姓名.可以看到,我們綁定了十條數據,用了一個for 循環,每一條綁定的時候創建一個HashMap,然后往里面放數據,放的數據有相對應的key, 即id,name,到時候我們取數據的時候就根據這個key 找到我們放進去的數據,有點類似與鍵值對的意思,不知道這樣解釋大家明白不明白。

貼上源代碼,然后接下來講解:

復制代碼 代碼如下:

/**  *  
 */ package com.cz.list.demo; 
 import java.util.ArrayList; 
import java.util.HashMap;  
import android.app.Activity; import android.os.Bundle; 
import android.widget.ListView; import android.widget.SimpleAdapter; 
 /** 
 * @author CZ  *  
 */ public class SimpleAdapterListDemo extends Activity { 
    private ListView listView;  
    /*      * (non-Javadoc) 
     *       * @see android.app.Activity#onCreate(android.os.Bundle) 
     */     @Override 
    protected void onCreate(Bundle savedInstanceState) {         // TODO Auto-generated method stub 
        super.onCreate(savedInstanceState);         setContentView(R.layout.array_list_layout); 
        listView = (ListView) findViewById(R.id.array_list);  
        SimpleAdapter simpleAdapter = new SimpleAdapter(                 SimpleAdapterListDemo.this, getHashMapData(), 
                android.R.layout.simple_list_item_2, new String[] { "id",                         "name" }, new int[] { android.R.id.text1, 
                        android.R.id.text2 });         listView.setAdapter(simpleAdapter); 
    }  
    /**      *  
     * @return Year:2011 Date:2011-10-23 Time:下午05:45:38 Author:CZ TODO      *         寫一個方法去綁定十條數據 
     */     private ArrayList<HashMap<String, Object>> getHashMapData() { 
        ArrayList<HashMap<String, Object>> hashData = new ArrayList<HashMap<String, Object>>();         for (int i = 0; i < 10; i++) { 
            HashMap<String, Object> mItem = new HashMap<String, Object>();             mItem.put("id", "當前的id是" + i); 
            mItem.put("name", "名字是美女" + i);             hashData.add(mItem); 
        }         return hashData; 
     } 
}

這個Adapter直接用的是SimpleAdapter,構造函數中有五個參數,可以看下:

android.widget.SimpleAdapter.SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)

構造函數中有五個參數,

第一個是context引用對象,
第二個參數就是我們要顯示的數據集List,
第三個參數是int 類型的,是我們每一條的自定義布局,程序中我們用到的是android中自帶的布局,所以用android.R.layout.list_item_2來引用,如果是我們自定義的布局,就直接用R.layout.XX引用就好。
第四個參數跟第五個參數需要一起理解,從字面的意思理解,from to 就是把第四個參數里面的數據顯示到第五個參數中。 第二個參數是我們要顯示的數據集,每條數據都是用哈希Map 來定義的,里面有定義的作為key 的字段,id,name, 有這樣一個映射的關系,第四個參數中的key 值映射到第五個參數中相對應的TextView 上面,那么這些TextView 是從哪里來的,是第三個參數中 布局文件中的TextView,這四個參數中可以這樣理解.

希望大家這時候可以理解。

接下來是自定義布局的例子,但是因為我第一次寫完提交的時候提示字符超過8萬,粘有貼錯了東西,讓我不禁在心里發下牢騷,編輯器有待提高啊..

接下來是自定義布局的例子,我們大家先看下程序出來的效果圖:

代碼是:

1.     首先自定義布局,我們命名一個custom_list_layout.xml的布局文件,代碼如下:

復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:id="@+id/imageView" android:layout_width="48dip"
android:layout_height="48dip" android:scaleType="fitCenter" android:adjustViewBounds="true" android:layout_alignParentLeft="true"
android:layout_margin="5dip"></ImageView> <TextView android:id="@+id/number" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="14dip" android:layout_toRightOf="@+id/imageView" android:layout_alignTop="@+id/imageView"></TextView>
<TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="10dip"
android:layout_toRightOf="@+id/imageView" android:layout_below="@+id/number"></TextView> </RelativeLayout>


2. 我們程序中的代碼:

復制代碼 代碼如下:

/** *
*/ package com.cz.list.demo;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity; import android.content.Context;
import android.os.Bundle; import android.util.Log;
import android.view.LayoutInflater; import android.view.View;
import android.view.ViewGroup; import android.widget.ImageView;
import android.widget.ListView; import android.widget.SimpleAdapter;
import android.widget.TextView;
/** * @author CZ
* */
public class CustomSimpleAdapterDemo extends Activity { private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub
super.onCreate(savedInstanceState); setContentView(R.layout.array_list_layout);
listView = (ListView) findViewById(R.id.array_list);
CustomSimpleAdapter customSimpleAdapter = new CustomSimpleAdapter( CustomSimpleAdapterDemo.this, getHashMapData(),
R.layout.custom_list_layout);
listView.setAdapter(customSimpleAdapter); }
/**
* * @author CZ
* 自定義的類去繼承SimpleAdapter */
private class CustomSimpleAdapter extends SimpleAdapter { private Context context;
private ArrayList<HashMap<String, Object>> data; private int layoutResource;
/**
* @param context * @param data
* @param resource * @param from
* @param to 構造函數 */
public CustomSimpleAdapter(Context context, ArrayList<HashMap<String, Object>> data, int resource) {
super(context, data, resource, null, null); this.context = context;
this.data = data; this.layoutResource = resource;
}
class ViewHolder { ImageView picture;
TextView number; TextView name;
}
/* * (non-Javadoc)
* * @see android.widget.SimpleAdapter#getView(int, android.view.View,
* android.view.ViewGroup) */
@Override public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); View layoutView = layoutInflater.inflate(layoutResource, null);
ViewHolder viewHolder = new ViewHolder(); viewHolder.picture = (ImageView) layoutView
.findViewById(R.id.imageView); viewHolder.number = (TextView) layoutView.findViewById(R.id.number);
viewHolder.name = (TextView) layoutView.findViewById(R.id.name);
viewHolder.picture.setImageResource(Integer.parseInt(data.get( position).get("imageView").toString()));
viewHolder.number.setText(data.get(position).get("id").toString()); Log.e("id", data.get(position).get("name").toString());
viewHolder.name.setText(data.get(position).get("name").toString()); return layoutView;
} }
/**
* * @return
* Year:2011 Date:2011-10-23 Time:下午05:46:45 * Author:CZ
* TODO 自定義的方法綁定數據,為了避免圖片全部都一樣,我們讓三張圖片循環綁定。 */
private ArrayList<HashMap<String, Object>> getHashMapData() { ArrayList<HashMap<String, Object>> hashData = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < 10; i++) { HashMap<String, Object> mItem = new HashMap<String, Object>();
mItem.put("id", "當前的編號是:" + i); mItem.put("name", "名字是美女" + i);
switch (i % 3) { case 0:
mItem.put("imageView", R.drawable.test1); break;
case 1: mItem.put("imageView", R.drawable.test2);
break; case 2:
mItem.put("imageView", R.drawable.test3); break;
default: mItem.put("imageView", R.drawable.test4);
break; }
hashData.add(mItem); }
return hashData;
}
}


有了之前的例子做基礎,這時候看起來是不是會清楚一些呢,綁定數據是一樣的,只不過是多綁定了圖片的數據。

然后我們重寫了SimpleAdapter, 構造函數我們自己定義參數,需要說明的是:

1) getView() 方法返回是的是一個View值,我們綁定完數據之后,把這個View返回

2) 我們自己寫的layout,要先通過轉化,轉化成為一個View, 找到她里面對應的TextView,然后取出List 表中相對應位置的HashMap,取出數據顯示到相應的ImageView 和TextView上面.

希望對新手有所幫助..

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久夜色撩人精品| 97精品伊人久久久大香线蕉| 亚洲精品成人久久久| 欧美国产一区二区三区| 色偷偷av亚洲男人的天堂| 亚洲一区二区三区视频播放| 久久久国产成人精品| 亚洲伊人久久大香线蕉av| 国产精品第三页| 69**夜色精品国产69乱| 夜夜嗨av色综合久久久综合网| 日本成人激情视频| 欧美伊久线香蕉线新在线| 欧美又大又硬又粗bbbbb| 永久免费毛片在线播放不卡| 日韩中文字幕视频在线| 国产精品999| 国产精品久久久久久久久久久不卡| 91精品国产高清久久久久久| 欧美精品一二区| 久久综合色影院| 亚洲无亚洲人成网站77777| 亚洲国产一区二区三区四区| 精品亚洲一区二区三区在线观看| 成人精品网站在线观看| 亚洲国产欧美日韩精品| 久久精品国产成人| 中文字幕国产精品久久| 久久久亚洲精品视频| 日韩中文字幕网| 91精品视频在线免费观看| www.久久久久| 久久免费成人精品视频| 欧美激情精品久久久久久| 欧美另类精品xxxx孕妇| 国产精品久久久久久久电影| 欧美乱妇高清无乱码| 欧美大片在线看| 中文在线资源观看视频网站免费不卡| 成人性生交大片免费看视频直播| 福利二区91精品bt7086| 亚洲美女中文字幕| 少妇高潮 亚洲精品| 最近的2019中文字幕免费一页| 欧美亚洲国产视频小说| 68精品国产免费久久久久久婷婷| 一区二区三区国产在线观看| 欧美精品午夜视频| 国产精品一区二区女厕厕| 亚洲欧美日韩中文在线制服| 欧美亚洲日本黄色| 超在线视频97| 国内精品久久久| 在线视频欧美日韩精品| 国产精品美女www爽爽爽视频| 欧美激情日韩图片| 亚洲aⅴ日韩av电影在线观看| 久久久国产精彩视频美女艺术照福利| 久久天天躁狠狠躁夜夜躁2014| 精品亚洲夜色av98在线观看| 国产成一区二区| 日韩在线播放一区| 成人国内精品久久久久一区| 亚洲国产精品久久久久| 日韩成人av在线| 91久久久久久久久久久久久| 日韩在线视频观看| 在线视频欧美日韩| 久久久久久国产免费| 国产91精品最新在线播放| 欧美又大又硬又粗bbbbb| 美女扒开尿口让男人操亚洲视频网站| 亚洲一区二区三区sesese| 97激碰免费视频| 欧美一区二区三区免费观看| 久久精品国产欧美亚洲人人爽| 777精品视频| 久久精品国产v日韩v亚洲| 国产午夜精品一区理论片飘花| 91系列在线观看| 国产美女主播一区| 在线精品视频视频中文字幕| 亚洲天堂av在线播放| 国产视频精品一区二区三区| 久久国产精品影视| 欧美人在线视频| 日韩av成人在线观看| 成人久久一区二区三区| 日韩美女视频中文字幕| 欧美性猛交xxxx免费看久久久| 久久97久久97精品免视看| 欧美大肥婆大肥bbbbb| 日韩av电影免费观看高清| 国产男人精品视频| 精品自拍视频在线观看| 久久精品男人天堂| 亚洲国产欧美自拍| 992tv成人免费影院| 国产精品一区二区三区在线播放| 97精品国产97久久久久久春色| 久久高清视频免费| 亚洲福利在线观看| 亚洲国产精品资源| 亚洲成在人线av| 性欧美xxxx视频在线观看| 日韩欧美国产成人| 久久精品国产一区| 欧美日韩在线视频一区| 国产成人综合av| 亚洲欧美日本精品| 久久综合伊人77777尤物| 国产精品91在线观看| 日韩成人xxxx| 日韩美女写真福利在线观看| 91高潮精品免费porn| 日韩精品视频在线播放| 日韩有码在线视频| 尤物yw午夜国产精品视频| 亚洲视频欧洲视频| 亚洲性日韩精品一区二区| 色噜噜久久综合伊人一本| 国产成人精品日本亚洲| 国产精品第二页| 国产婷婷成人久久av免费高清| 亚洲精品自产拍| 亚洲嫩模很污视频| 国产精品毛片a∨一区二区三区|国| 国产69精品久久久| 久久久久久久久久婷婷| 最近2019中文字幕第三页视频| 国外成人在线播放| 国产精品久久久久久影视| 久久久久国产精品www| 久久精品人人做人人爽| 亚洲第一级黄色片| 亚洲精品电影网在线观看| 国产精品劲爆视频| 久久免费精品日本久久中文字幕| 亚洲美女久久久| 成人av资源在线播放| 日韩精品视频在线观看免费| 久久综合88中文色鬼| 国产欧美在线播放| 国产一区二区三区在线视频| 欧美激情精品久久久| 亚洲精品日韩激情在线电影| 高清亚洲成在人网站天堂| 久久成人av网站| 午夜精品www| 色婷婷综合成人av| 日韩激情视频在线| 久久韩国免费视频| 在线日韩第一页| 成人字幕网zmw| 欧美亚洲伦理www| 亚洲欧洲在线视频| 日韩在线欧美在线| 国产午夜精品美女视频明星a级| 久久久久久成人精品| 国产欧美欧洲在线观看| 国产欧美 在线欧美| 成人精品在线视频| 91久久国产精品| 国产精品久久久久久久久借妻|