l Adapter
n ArrayAdapter
只能簡單的顯示一段文字,不能有複雜的清單佈局。
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this,
R.layout.item,//只能有一個定義了id的TextView
data);//data既可以是數組,也可以是List集合
或是採用自己的佈局
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this,
R.layout.item,//只能有一個定義了id的TextView
R.id.textView1, //告訴它顯示文字於那一個textView
data);//data既可以是數組,也可以是List集合
依然可以在自定義的layout中放入圖片,但無法在java程式中動態修改圖片內容。
n SimpleAdapter
可以顯示比較複雜的layout,包含每行顯示的圖片、文字等,但不能在java程式中進行後續的修改。只是單純進行顯示之作用。
List<Map<String,Object>> mData= new ArrayList<Map<String,Object>>();
for(int i =0; i < lengh; i++) {
Map<String,Object> item = new HashMap<String,Object>();
item.put("image", R.drawable.portrait);
item.put("title", mListTitle[i]);
item.put("text", mListStr[i]);
mData.add(item);
}
SimpleAdapter adapter = new SimpleAdapter(
this,
mData,
R.layout.item,
new String[]{"image","title","text"},
new int[]{R.id.image,R.id.title,R.id.text});
n BaseAdapter
此class只是一個abstract class,必需自行定義class來繼承此類別,並覆寫未完成的function。能顯示更靈活、複雜的layout畫面。
private class MyListAdapter extends BaseAdapter{
private CoNtext mCoNtext;
private int[] colors=new int[]{0xff626569,0xff4f5257 };
public MyListAdapter(CoNtext coNtext){
mCoNtext=coNtext;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mListText.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView image=null; //這些控制項可以單獨封裝成一個類(Holder),便與優化
TextView title=null;
TextView content=null;
if(convertView==null){
convertView=LayoutInflater.from(mCoNtext).inflate(R.layout.colorlist, null);
image=(ImageView) convertView.findViewById(R.id.color_image);
title=(TextView) convertView.findViewById(R.id.color_title);
content=(TextView) convertView.findViewById(R.id.color_text);
}
int colorPos=position%colors.length;
convertView.setBackgroundColor(colors[colorPos]);
title.setText(mListTitle[position]);
content.setText(mListText[position]);
image.setImageResource(R.drawable.portrait);
return convertView;
}
}
留言列表