我有一个关于在android中填充listviews的一个非常基本的问题。现在,如果我想这样做,我使用SimpleCursorAdapter,它的效果非常好。但是由于我的程序变得越来越复杂,我想在显示之前操纵数据(你知道,格式化字符串aso)我面临的问题是,在从数据库请求到ListElements的路上,实际上并没有点,我可以操纵数据。由于每个ListElement有四个TextView,因此,据我所知,ArrayAdapter是不可能的。由于我对Android很新,我甚至不知道谷歌的用途。
非常感谢你的帮助, 丹尼尔
答案 0 :(得分:0)
这样做的常见方法是在适配器的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。使用holder示例,您可以设置4个视图并更新它们。