Android_adapter的實現

adapter一般用於listview中,這裏我們先佈局listview

開發一個顯示音樂文件列表爲例。

首先新建一個listview顯示的item.xml

mp3_item.xml代碼

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/mp3Image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/mp31" />

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView 
            android:id="@+id/mp3Name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18dip"
            android:text="mp3Name"
            android:layout_weight="1"/>
        <TextView 
            android:id="@+id/mp3Size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="14dip"
            android:text="mp3Size"
            android:layout_weight="1"/>
    </LinearLayout>
</LinearLayout>

繼承了listactivity的MainActivity.java代碼

package com.raise.adapter;

import java.util.ArrayList;
import java.util.List;

import com.raise.bean.Mp3Info;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ListView;
import android.os.Build;

public class MainActivity extends ListActivity {

	ListView listView;
	List<Mp3Info> mp3List = new ArrayList<Mp3Info>();
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		listView = getListView();
		Mp3Info mp3Info0 = new Mp3Info("11111",1111);
		Mp3Info mp3Info1 = new Mp3Info("22222",2222);
		Mp3Info mp3Info2 = new Mp3Info("33333",3333);
		Mp3Info mp3Info3 = new Mp3Info("44444",4444);
		mp3List.add(mp3Info0);
		mp3List.add(mp3Info1);
		mp3List.add(mp3Info2);
		mp3List.add(mp3Info3);
		//新建一個MP3adapter
		Mp3Adapter mp3Adapter = new Mp3Adapter(mp3List, this);
		//設置到listview顯示
		listView.setAdapter(mp3Adapter);
		
	}


}

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

    <ListView
        android:id="@id/android:list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbars="vertical" >
    </ListView>

</LinearLayout>



1.通過繼承baseadapter來實現

Mp3Adapter.java代碼

package com.raise.adapter;

import java.util.List;
import com.raise.bean.Mp3Info;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class Mp3Adapter extends BaseAdapter {
	// 讀取音樂文件列表
	private List<Mp3Info> mp3List;
	Context mContext;

	public Mp3Adapter(List<Mp3Info> mp3List, Context mContext) {
		super();
		this.mp3List = mp3List;
		this.mContext = mContext;
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return mp3List.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return mp3List.get(position);
	}

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

	/*
	 * 主要是這個方法的實現,通過返回的view顯示列表
	 * 
	 * @see android.widget.Adapter#getView(int, android.view.View,
	 * android.view.ViewGroup)
	 */
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		//保存加載的view
		ViewHolder holder = null;
		// 獲取佈局文件
		LayoutInflater mInflater = LayoutInflater.from(mContext);
		// 用緩存創建一個新的item
		if (convertView == null) {
			convertView = mInflater.inflate(R.layout.mp3_item, null);
			holder = new ViewHolder();
			holder.mp3Img = (ImageView) convertView.findViewById(R.id.mp3Image);
			holder.mp3Name = (TextView) convertView.findViewById(R.id.mp3Name);
			holder.mp3Size = (TextView) convertView.findViewById(R.id.mp3Size);
			convertView.setTag(holder);
		} else {
			holder = (ViewHolder) convertView.getTag();
		}
		//設置顯示的值
		Mp3Info mp3Info = mp3List.get(position);
		holder.mp3Img.setImageResource(R.drawable.mp31);
		holder.mp3Name.setText(mp3Info.getMp3Name());
		holder.mp3Size.setText(mp3Info.getMp3Size()+"");
		//返回View
		return convertView;
	}

	public final class ViewHolder {
		public ImageView mp3Img;
		public TextView mp3Name;
		public TextView mp3Size;
	}
}

2.通過繼承ArrayAdapter來實現

package com.raise.adapter;

import java.util.List;
import com.raise.bean.Mp3Info;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class Mp3Adapter01 extends ArrayAdapter<Mp3Info> {

	private Context mContext;

	public Mp3Adapter01(Context context,  int textViewResourceId,
			List<Mp3Info> objects) {
		super(context, textViewResourceId, objects);
		this.mContext = context;
		// TODO Auto-generated constructor stub
	}

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

		// 保存加載的view
		ViewHolder holder = null;
		// 獲取佈局文件
		LayoutInflater mInflater = LayoutInflater.from(mContext);
		// 用緩存創建一個新的item
		if (convertView == null) {
			convertView = mInflater.inflate(R.layout.mp3_item, null);
			holder = new ViewHolder();
			holder.mp3Img = (ImageView) convertView.findViewById(R.id.mp3Image);
			holder.mp3Name = (TextView) convertView.findViewById(R.id.mp3Name);
			holder.mp3Size = (TextView) convertView.findViewById(R.id.mp3Size);
			convertView.setTag(holder);
		} else {
			holder = (ViewHolder) convertView.getTag();
		}
		// 設置顯示的值
		Mp3Info mp3Info = getItem(position);
		holder.mp3Img.setImageResource(R.drawable.mp31);
		holder.mp3Name.setText(mp3Info.getMp3Name());
		holder.mp3Size.setText(mp3Info.getMp3Size() + "");
		// 返回View
		return convertView;
	}

	public final class ViewHolder {
		public ImageView mp3Img;
		public TextView mp3Name;
		public TextView mp3Size;
	}
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章