最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2013年06月05日 12:14:01   作者:  
之前寫的綁定數(shù)據(jù)是只是簡單的綁定了字符串,這次我們將一次綁定多條數(shù)據(jù)并且嘗試用自定義的布局。在這篇文章中首先講解的是用Hashmap 去綁定數(shù)據(jù),第二個例子,講解自定義布局然后綁定數(shù)據(jù)
大家先看第一個例子顯示:

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

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

復(fù)制代碼 代碼如下:

/**  *  
 */ 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      *         寫一個方法去綁定十條數(shù)據(jù) 
     */     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,構(gòu)造函數(shù)中有五個參數(shù),可以看下:

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

構(gòu)造函數(shù)中有五個參數(shù),

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

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

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

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

代碼是:

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

復(fù)制代碼 代碼如下:

<?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. 我們程序中的代碼:

復(fù)制代碼 代碼如下:

/** *
*/ 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 構(gòu)造函數(shù) */
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 自定義的方法綁定數(shù)據(jù),為了避免圖片全部都一樣,我們讓三張圖片循環(huán)綁定。 */
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;
}
}


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

然后我們重寫了SimpleAdapter, 構(gòu)造函數(shù)我們自己定義參數(shù),需要說明的是:

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

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

希望對新手有所幫助..

相關(guān)文章

  • Android利用SAX對XML進行增刪改查操作詳解

    Android利用SAX對XML進行增刪改查操作詳解

    在項目中會遇到對于XML的增刪改查,下面這篇文章主要給大家介紹了關(guān)于Android利用SAX對XML進行增刪改查操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • Android仿iphone自定義滾動選擇器

    Android仿iphone自定義滾動選擇器

    這篇文章主要為大家詳細介紹了Android仿iphone自定義滾動選擇器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Android5.0新控件實例詳解

    Android5.0新控件實例詳解

    谷歌在推出Android5.0的同時推出了一些新控件,Android5.0中最常用的新控件有下面5種。具體哪五種大家通過本文學習下
    2018-02-02
  • 創(chuàng)建Android守護進程實例(底層服務(wù))

    創(chuàng)建Android守護進程實例(底層服務(wù))

    這篇文章主要介紹了創(chuàng)建Android守護進程實例(底層服務(wù)),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Android Eclipse 注釋模板的使用(圖文說明)

    Android Eclipse 注釋模板的使用(圖文說明)

    為提高代碼的可讀性以及后期的可維護性,為我們的代碼加上規(guī)范化的注釋是很有必要,不僅有利于提高自己的專業(yè)素養(yǎng),也能方便他人
    2013-12-12
  • Android?利用ImageView屬性實現(xiàn)選中和未選中效果

    Android?利用ImageView屬性實現(xiàn)選中和未選中效果

    這篇文章主要介紹了Android巧用ImageView屬性實現(xiàn)選中和未選中效果,實現(xiàn)思路通常我們會選擇在布局里加個ImageView,然后通過代碼層面加個判斷去讓ImageView加載不同狀態(tài)的圖片,需要的朋友可以參考下
    2023-06-06
  • Android 仿京東、拼多多商品分類頁的示例代碼

    Android 仿京東、拼多多商品分類頁的示例代碼

    本篇文章主要介紹了Android 仿京東、拼多多商品分類頁的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-08-08
  • Android自定義View實現(xiàn)五子棋小游戲

    Android自定義View實現(xiàn)五子棋小游戲

    這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)五子棋小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Android日期顯示和日期選擇庫

    Android日期顯示和日期選擇庫

    這篇文章主要為大家詳細介紹了Android日期顯示和日期選擇庫的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Flutter學習之構(gòu)建、布局及繪制三部曲

    Flutter學習之構(gòu)建、布局及繪制三部曲

    這篇文章主要給大家介紹了關(guān)于Flutter學習之構(gòu)建、布局及繪制三部曲的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Flutter具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04

最新評論

三门峡市| 巴中市| 东乡| 英吉沙县| 廉江市| 伊金霍洛旗| 邹平县| 霍城县| 瓦房店市| 滦平县| 明光市| 宣化县| 克山县| 济南市| 福泉市| 光山县| 郓城县| 依安县| 乌拉特前旗| 萝北县| 中山市| 彩票| 隆昌县| 盘锦市| 邓州市| 方正县| 治多县| 镇康县| 威宁| 抚顺县| 大石桥市| 清河县| 松江区| 平顶山市| 扶绥县| 克拉玛依市| 兴城市| 磴口县| 龙南县| 藁城市| 友谊县|