標籤:
學習使用ListView組件和SimapleAdapter適配器實現一個帶表徵圖的ListView列表
總共3部分
一、MainActivity.java檔案
1 package xqx; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 8 import com.example.test.R; 9 10 import android.app.Activity;11 import android.content.res.TypedArray;12 import android.os.Bundle;13 import android.view.View;14 import android.view.View.OnClickListener;15 import android.view.ViewGroup;16 import android.widget.AdapterView;17 import android.widget.AdapterView.OnItemClickListener;18 import android.widget.BaseAdapter;19 import android.widget.Gallery;20 import android.widget.ImageView;21 import android.widget.ListView;22 import android.widget.SimpleAdapter;23 import android.widget.Toast;24 25 public class MainActivity extends Activity{26 27 private ListView listview;28 @Override29 protected void onCreate(Bundle savedInstanceState) {30 // TODO Auto-generated method stub31 super.onCreate(savedInstanceState);32 33 setContentView(R.layout.mainactivity);34 //擷取列表視圖35 listview = (ListView) findViewById(R.id.listView1);36 //定義並初始化儲存圖片ID的數組37 int [] imageId = new int[]{R.drawable.menu_chapu,R.drawable.menu_chapu,R.drawable.menu_chapu,R.drawable.menu_chapu,R.drawable.menu_chapu};38 //定義並初始化儲存清單項目文字的數組39 String[] title = new String[]{"茶忌","茶具","茶療","茶譜","更多"};40 //建立list集合41 List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>();42 //通過for迴圈將圖片id和清單項目文字放到Map中,並添加到list集合中43 for(int i=0;i<imageId.length;i++)44 {45 //執行個體化Map對象46 Map<String,Object> map = new HashMap<String,Object>();47 map.put("image", imageId[i]);48 map.put("title", title[i]);49 //將map對象添加到List集合50 listItems.add(map);51 }52 SimpleAdapter adapter = new SimpleAdapter(this, listItems, R.layout.items, new String[]{"title","image"},new int[]{R.id.title,R.id.image});53 listview.setAdapter(adapter);54 }55 56 }
二、兩個 layout
(1)items.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="horizontal" > 6 7 <ImageView 8 android:id="@+id/image" 9 android:paddingRight="10px"10 android:paddingTop="20px" //圖片距離頭部20px11 android:paddingBottom="20px" //圖片距離底部20px12 android:adjustViewBounds="true" //
| 在ImageView 調整邊界時保持圖片的縱橫比例,需要與maxWidth、MaxHeight一起使用,否則單獨使用沒有效果。 |
13 android:maxWidth="72px"14 android:maxHeight="72px"15 android:layout_width="wrap_content"16 android:layout_height="wrap_content"17 />18 19 <TextView 20 android:layout_width="wrap_content"21 android:layout_height="wrap_content"22 android:padding="10px"23 android:layout_gravity="center"24 android:id="@+id/title"25 />26 </LinearLayout>
用於布局清單項目內容,採用水平線性布局,並在該布局管理器中添加一個ImageView組件和一個TextView組件,分別用於顯示清單項目中的表徵圖和文字
(2)mainactivity.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 7 <ListView 8 android:id="@+id/listView1" 9 android:layout_width="match_parent"10 android:layout_height="wrap_content" >11 </ListView>12 13 </LinearLayout>
三、AndroidManifest.xml
1 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 2 package="com.example.test" 3 android:versionCode="1" 4 android:versionName="1.0" > 5 6 <uses-sdk 7 android:minSdkVersion="8" 8 android:targetSdkVersion="18" /> 9 10 <application11 android:allowBackup="true"12 android:icon="@drawable/ic_launcher"13 android:label="@string/app_name"14 android:theme="@style/AppTheme" >15 <activity android:name="xqx.MainActivity">16 - <intent-filter>17 <action android:name="android.intent.action.MAIN" /> 18 <category android:name="android.intent.category.LAUNCHER" /> 19 </intent-filter>20 </activity>21 </application>22 23 </manifest>
安卓開發之帶表徵圖的列表