Создайте собственный макет строки, например, custom_row.xml, и расположите все необходимые представления так же, как в обычном макете для деятельности (поэтому в этом случае вы, вероятно, предоставите текстовое представление для текста и, возможно, значокслева от него).
Затем создайте пользовательский адаптер, расширив существующий адаптер, и переопределите метод getView как таковой.Вот пример, в котором используется макет custom_row с заголовком и подзаголовком:
class CustomAdapter<T> extends ArrayAdapter<T> {
/** List item title */
protected TextView mTitle;
/** List item subtitle */
protected TextView mSubtitle;
/**
* @param context
* Current context
* @param items
* Items being added to the adapter
*/
public CustomAdapter(final Context context, final List<T> items) {
super(context, R.layout.custom_row, items);
}
/** Construct row */
@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
View view = convertView;
if (view == null) {
final LayoutInflater li = (LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
view = li.inflate(R.layout.custom_row, null);
}
mTitle = (TextView) view.findViewById(R.id.custom_row_title);
mSubtitle = (TextView) view.findViewById(R.id.custom_row_subtitle);
return view;
}
}
Как показано, вы можете получить элементы, указанные в макете custom_row, который вы создали с помощью службы inflater.Затем вы можете манипулировать объектами по мере необходимости.