Thanks for the responses, guys. I've figured it out...
private void showColourChooserDialog(){
final ColourItem[] items = {
new ColourItem(Color.RED),
new ColourItem(Color.GREEN),
new ColourItem(Color.BLUE),
};
ListAdapter adapter = new ArrayAdapter<ColourItem>(
this,
android.R.layout.select_dialog_item,
android.R.id.text1,
items){
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
TextView tv = (TextView)v.findViewById(android.R.id.text1);
int colour = items[position].getColour();
tv.setBackgroundColor(colour);
return v;
}
};
new AlertDialog.Builder(this)
.setTitle("Choose Colour")
.setAdapter(adapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// ... respond to choice here
}
}).show();
}
The ColourItem class:
public class ColourItem {
private String displayString;
private int colour;
public ColourItem (int colour) {
this(colour, "");
}
public ColourItem (int colour, String displayString) {
this.colour = colour;
this.displayString = displayString;
}
@Override
public String toString() {
return displayString;
}
public void setDisplayString(String s){
this.displayString = s;
}
public int getColour(){
return colour;
}
public void setColour(int i){
this.colour = i;
}
}
The answer was inspired by: This solution regarding custom icons for dialog items