[Android] Custom ListView With ICON

Android本身基本的控制項是沒有圖示的列表,但如果要自訂圖示要怎麼辦咧?這時候就要自己客制裡面的每一個item的項目了。

開發環境:Android 2.2

Android本身基本的控制項是沒有圖示的列表,但如果要自訂圖示要怎麼辦咧?這時候就要自己客制裡面的每一個item的項目了。我想要做的是每個列表都有自己的圖示,先準備一個item使用的xml:


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView android:id="@+id/icon"
        android:layout_width="48dip"
        android:layout_height="48dip" />

    <TextView android:id="@+id/text"
        android:layout_gravity="center_vertical"
        android:layout_width="0dip"
        android:layout_weight="1.0"
        android:layout_height="wrap_content" />

</LinearLayout>

 

接下來當然就是要自訂一個Adapter啦~


	private static class ToolMenuAdapter extends BaseAdapter
	{
		private LayoutInflater mInflater;
		private String[] array;

		private List<Bitmap> bitmaps = new ArrayList<Bitmap>();

		public ToolMenuAdapter(Context context)
		{
			mInflater = LayoutInflater.from(context);
			array = context.getResources().getStringArray(R.array.tool_array);

			bitmaps.add(BitmapFactory.decodeResource(context.getResources(), R.drawable.camera));
			bitmaps.add(BitmapFactory.decodeResource(context.getResources(), R.drawable.qrcode));
		}

		@Override
		public int getCount()
		{
			return array.length;
		}

		@Override
		public Object getItem(int arg0)
		{
			// TODO Auto-generated method stub
			return array[arg0];
		}

		@Override
		public long getItemId(int arg0)
		{
			// TODO Auto-generated method stub
			return arg0;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent)
		{
			ViewHolder holder;

			if (convertView == null)
			{
				convertView = mInflater.inflate(R.layout.list_item_icon_text, null);

				holder = new ViewHolder();
				holder.text = (TextView) convertView.findViewById(R.id.text);
				holder.icon = (ImageView) convertView.findViewById(R.id.icon);

				convertView.setTag(holder);
			}
			else
			{

				holder = (ViewHolder) convertView.getTag();
			}

			holder.text.setText(array[position]);
			holder.icon.setImageBitmap(bitmaps.get(position));

			return convertView;
		}

		static class ViewHolder
		{
			TextView text;
			ImageView icon;
		}

	}

列表就會長的像這樣:

device

 

註:SDK下的ApiDemos有更多的範例~

 

Dotblogs 的標籤: ,