這樣做的常見方式,以便爲您的適配器的getView
。你可以這樣做:
class ContactAdapter extends ArrayAdapter<String> {
private LayoutInflater mInflater;
public ContactAdapter(Context context, int textViewResourceId, List<String> items) {
super(context, textViewResourceId, items);
mInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.rowcontact, null);
holder = new ViewHolder();
holder.lastname = (TextView) convertView.findViewById(R.id.rowTop);
holder.firstname = (TextView) convertView.findViewById(R.id.rowBottom);
holder.iconContact = (ImageView) convertView.findViewById(R.id.iconContact);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
String item = getItem(position);
int i = (int) (Math.random() * 5 + 1);
switch (i) {
...
}
if (item != null) {
holder.lastname.setText(item.split("-")[0]);
holder.firstname.setText(item.split("-")[1]);
holder.iconContact.setImageBitmap(bm);
}
return convertView;
}
}
static class ViewHolder {
TextView lastname;
TextView firstname;
ImageView iconContact;
}
}
你可以找到完整的代碼示例there。通過持有者示例,您可以設置4個視圖並進行更新。
@Sephy他在這裏只問了3個問題,甚至你告訴他接受答案。 –
我發現:[點擊這裏](http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/)它應該幫助你! – kyp
所以你真的必須編寫自己的適配器?我希望有一個更簡單的方法,但我會嘗試並讓你知道,如果它工作。謝謝。 – Daniel