If you want to create a detailed list you may need a custom adapter for that list.
With the solution below you can manipulate and populate your custom list.

1. extend ArrayAdapter<YourClass>

2. override public View getView(int position, View convertView, ViewGroup parent)


Ex. :

public class TaskAdapter extends ArrayAdapter {

private ArrayList items;

public TaskAdapter(Context context, int textViewResourceId, ArrayList items) {
super(context, textViewResourceId, items);
this.items = items;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.history_row, null);
}
Task task = items.get(position);
if (task != null) {

TextView txtViewTaskName = (TextView) v.findViewById(R.id.listTaskHistoryNameRow);

if (txtViewTaskName != null) {
txtViewTaskName.setText(task.getTaskName());
}

}
return v;
}

}