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入門之ListView (二)AndroidView
- Android入門之ListView (一)AndroidView
- Gradle for Android 第七篇( Groovy入門 )GradleAndroid
- Android之ListViewAndroidView
- 第七篇.HFM規則入門(一)
- Android之ListView與SimpleAdapter的使用AndroidViewAPT
- Android ListViewAndroidView
- Android 自定義 View 之入門篇AndroidView
- Android開發之ListView使用經驗分享AndroidView
- Android 測試入門之---Monkey testAndroid
- Android的ListViewAndroidView
- Flutter入門進階之旅(十四)ListView&GridViewFlutterView
- android之豎直滾動控制元件-ListViewAndroid控制元件View
- ListView 之非同步載入圖片亂序View非同步
- ACM入門之新手入門ACM
- Android入門教程 | RecyclerView使用入門AndroidView
- Mac之Android Studio開發NDK入門MacAndroid
- ArcGIS for Android入門程式之DrawTool2.0Android
- android ListView非同步載入圖片(雙快取)AndroidView非同步快取
- android中的ListViewAndroidView
- android listview and scrollviewAndroidView
- android:ListView bbs DemoAndroidView
- android 入門- 詞彙Android
- Android Bluetooth 入門Android
- 《Android Gradle權威指南》之Gradle入門AndroidGradle
- Android開發入門之熟悉開發環境Android開發環境
- Android入門教程 | Kotlin協程入門AndroidKotlin
- android之截圖(包括擷取scrollview與listview的)AndroidView
- Android設計模式原始碼解析之ListView觀察者模式Android設計模式原始碼View
- Android ListView元件樣式AndroidView元件
- Android裡透明的ListViewAndroidView
- android listview checkedTextView 的使用AndroidTextView
- android 設定listview高度AndroidView
- 《Flutter 入門經典》之“Flutter 入門 ”Flutter
- Flutter入門進階之旅(十五)ListView下拉重新整理&上拉載入更多FlutterView
- Android WorkManager使用入門Android
- Android新手入門1Android
- Android學習 - 入門Android