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;
}
}