Check out this constructor for SimpleAdapter:
http://bit.ly/99OFSo
Essentially, you create a custom layout to represent each row. Assign id's to the ImageView and TextView elements in this layout. You create a List<? extends Map<String, ?>>
object to represent your data. Each item in the list is a Map<String, [some object]>
that represents a key and value for each piece of data you want to display. The third argument to the constructor is the id of the row layout. The fourth argument is an array of strings representing the keys for each piece of data in the Map you created earlier, and the fifth argument is an array of int id's of the ImageView and TextView elements in your layout (in corresponding order to the string array in the previous argument).
I've got something like the following:
ListView someListView= (ListView)findViewById(R.id.someListView);
SimpleAdapter adapter = new SimpleAdapter(
this,
someHelperMethodThatReturnsMyList(),
R.layout.custom_row,
new String[] { "field1", "field2", "field3" },
new int[] { R.id.txtField1, R.id.txtField2, R.id.imgField3}
);
someListView.setAdapter(adapter);