Question: I need to create a more advanced list in my android application, that will contain more then just one string per item. Actually, I'm looking for something similar to the appointments view in the calendar app: I want to categories my items by day, and show something similar to the hour of the appointment.

No idea how to go about this though, I'm guessing it's not possible with the ListActivity?

What do you guys suggest?

**Edit:**
If someone could give a code example I'd really appreciate it, I'm not sure how to execute what was suggested in the current replies..

Answer: 
It's easily doable with ListACtivity. You need to create a subclass within it, that extends ArrayAdapter (or any other list adapter) and overrides it's getView() method. You will want to create an xml file defining the "view" for each list item. Then within your overridden getView() method, you will need to inflate that view, then use findViewById() for each of the elements you want to assign a value to.

```
public class YourListActivity extends ListActivity {
    private String[] values = new String[]{"Row 1", "Row 2", "Row 3"};
    private class Adapter extends ArrayAdapter<String> {
        private LayoutInflater li = LayoutInflater.from(this.getContext());
        public Adapter() {
            super(YourListActivity.this, 0, values);
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent){
            View v = li.inflate(R.layout.row, parent);
            TextView field1 = (TextView) v.findViewById(R.id.field1);
            field1.setText(values[position]);
            return v;
        }
    }
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setListAdapter(new Adapter());
    }
}

```

row.xml:

```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/field1"
    />
</LinearLayout>

```

main.xml:

```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@android:id/list"
    />
</LinearLayout>

```

You can further modify the appearance of the row, and the fields it holds, by adding additional TextViews to the row.xml, and using the `position` passed through to `getView()` to set the values of your extra fields as appropriate, and you can even customise the rows on a row-by-row basis if you need.
Create a ListAdapter. That's the class responsible for providing the list with its UI elements. With its getView you can create whatever Views you like. If you have more than one type of list element, beware not to reuse the convertView that getView receives.