Вы можете сделать это в методе getView()
вашего ArrayAdapter класса (при условии, что вы определяете свой собственный ArrayAdapter
).
У вас может быть что-то вроде этого:
private class YourAdapter extends ArrayAdapter<Message> {
private final LayoutInflater mLayoutInflater;
YourAdapter(YourListActivity activity) {
super(mContext, 0);
mLayoutInflater = LayoutInflater.from(activity);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
// Inflate your view
convertView = mLayoutInflater.inflate(R.layout.list_view_item, parent, false);
mViewHolder = new ViewHolder();
mViewHolder.avatar = (ImageView) convertView.findViewById(R.id.placeholder);
mViewHolder.message = (TextView) convertView.findViewById(R.id.message);
convertView.setTag(mViewHolder);
} else {
mViewHolder = (ViewHolder) convertView.getTag();
}
final Message message = getItem(position);
mViewHolder.message.setText(message.getMessage());
// etc. Manipulate your views as you wish
return convertView;
}
}
private static class ViewHolder {
TextView message;
ImageView avatar;
}
getView
будет вызываться каждый раз, когда вы изменяете ListView
(например, когда вы прокручиваете или когда к нему добавляются новые элементы), так что вы можете манипулировать каждой строкой
как ты хочешь там.
Не забудьте установить адаптер массива ListView
для экземпляра этого класса.
listView.setListAdapter(new mYourAdapter);