Android的ListView
講的是如何製作一個具有兩行文字的 自定義控制元件 ,作為ListView的Item的使用方法。這篇接下來也是圍繞ListView和Item,更加深入地介紹它們的用法。
首先,先來看看本文程式碼執行的結果,本文的Item比上一篇中的Item多出左邊的圖示:
main.xml的原始碼,跟上一篇的一樣,這裡就不作解釋了,直接貼出item.xml的程式碼,就是它實現ImageItem的UI:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:paddingBottom="4dip"
android:paddingLeft="12dip">
<ImageView
android:layout_width="wrap_content"
android:id="@+id/itemImage" android:layout_height="fill_parent">
</ImageView>
<TextView
android:text="TextView01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/itemTitle" android:layout_toRightOf="@+id/itemImage" android:textSize="20dip">
</TextView>
<TextView
android:text="TextView02"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/itemText" android:layout_toRightOf="@+id/itemImage" android:layout_below="@+id/itemTitle">
</TextView>
</RelativeLayout>
解釋一下 item.xml的程式碼:這裡使用了RelativeLayout佈局,控制元件的關鍵的屬性是:
itemTitle的屬性 android:layout_toRightOf="@+id/itemImage" ,itemTitle在itemImage的右邊;
itemText的屬性 android:layout_toRightOf="@+id/itemImage",ItemText在itemImage的右邊, android:layout_below="@+id/itemTitle", itemText 在 itemTitle的下面。
最後,貼出JAVA的原始碼,其中重點是LayoutInflate的用法。LayoutInflate的使用方法如下:
-
LayoutInflater的作用是,把一個View的物件與XML佈局檔案關聯並例項化。
-
View的物件例項化之後,可以通過findViewById()查詢佈局檔案中的指定Id的元件。
package com.testListView;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class testListView extends Activity {
ListView listView;
String[] titles={"標題1","標題2","標題3","標題4"};
String[] texts={"文字內容A","文字內容B","文字內容C","文字內容D"};
int[] resIds={R.drawable.icon,R.drawable.icon,R.drawable.icon,R.drawable.icon};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.setTitle("BaseAdapter for ListView");
listView=(ListView)this.findViewById(R.id.listView1);
listView.setAdapter(new ListViewAdapter(titles,texts,resIds));
}
public class ListViewAdapter extends BaseAdapter {
View[] itemViews;
public ListViewAdapter(String[] itemTitles, String[] itemTexts,
int[] itemImageRes) {
itemViews = new View[itemTitles.length];
for (int i = 0; i < itemViews.length; i++) {
itemViews[i] = makeItemView(itemTitles[i], itemTexts[i],
itemImageRes[i]);
}
}
public int getCount() {
return itemViews.length;
}
public View getItem(int position) {
return itemViews[position];
}
public long getItemId(int position) {
return position;
}
private View makeItemView(String strTitle, String strText, int resId) {
LayoutInflater inflater = (LayoutInflater) testListView.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// 使用View的物件itemView與R.layout.item關聯
View itemView = inflater.inflate(R.layout.item, null);
// 通過findViewById()方法例項R.layout.item內各元件
TextView title = (TextView) itemView.findViewById(R.id.itemTitle);
title.setText(strTitle);
TextView text = (TextView) itemView.findViewById(R.id.itemText);
text.setText(strText);
ImageView image = (ImageView) itemView.findViewById(R.id.itemImage);
image.setImageResource(resId);
return itemView;
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
return itemViews[position];
return convertView;
}
}
}
相關文章
- android中的ListViewAndroidView
- Android ListViewAndroidView
- Android裡透明的ListViewAndroidView
- android listview checkedTextView 的使用AndroidTextView
- Android之ListViewAndroidView
- android:ListView 的簡單用法AndroidView
- android:定製 ListView 的介面AndroidView
- android的listview的詳細用法AndroidView
- android listview and scrollviewAndroidView
- android:ListView bbs DemoAndroidView
- android:提升 ListView 的執行效率AndroidView
- Android ListView元件樣式AndroidView元件
- android 設定listview高度AndroidView
- Android:ListView的擴充與進階AndroidView
- Android之ListView與SimpleAdapter的使用AndroidViewAPT
- Android ListView的滾動條樣式AndroidView
- Android listview與adapter用法AndroidViewAPT
- Android ListView(Selector 顏色)AndroidView
- Android入門之ListView (二)AndroidView
- Android入門之ListView (一)AndroidView
- android原始碼解析--ListView(上)Android原始碼View
- Android中焦點移到ListView的問題(轉)AndroidView
- Android中ListView控制元件onItemClick事件中獲取listView傳遞的資料AndroidView控制元件事件
- android:listView Button 焦點問題AndroidView
- Android中ExpandableListView中巢狀ListViewAndroidView巢狀
- Android ListView(Selector 背景圖片)AndroidView
- Android ListView 介面卡模式解析AndroidView模式
- android listview獲取選中項AndroidView
- android listView巢狀gridview的使用心得AndroidView巢狀
- android ListView中CheckBox錯位的解決AndroidView
- Android listView奇偶項採用不同的佈局AndroidView
- android 滑動刪除的listview(自定義view)AndroidView
- Android ListView初始化簡單分析AndroidView
- 再次探究Android ListView快取機制AndroidView快取
- android 用ListView實現表格樣式AndroidView
- android如何獲取listview中的任意行資料AndroidView
- Android ListView中獲取選中行資料的方法AndroidView
- Android------Anndroid中ListView在劃屏到底部的時候動態新增ListView的Item實現AndroidView