l  Adapter

n  ArrayAdapter

只能簡單的顯示一段文字,不能有複雜的清單佈局。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this,
R.layout.item,//只能有一個定義了idTextView
data);//data既可以是數組,也可以是List集合

或是採用自己的佈局

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this,
R.layout.item,//只能有一個定義了idTextView
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;
    }
 
}

 

arrow
arrow
    創作者介紹
    創作者 y23462001 的頭像
    y23462001

    y23462001的部落格

    y23462001 發表在 痞客邦 留言(0) 人氣()