 <p>Here's what I do.</p> <p><strong>row.xml</strong></p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical"&gt; &lt;TextView android:id="@+id/left_text" android:layout_width="75dip" android:layout_height="wrap_content" /&gt; &lt;TextView android:id="@+id/right_text" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:maxLines="2" android:ellipsize="end" /&gt; &lt;/LinearLayout&gt;</code></pre> <p><strong>Main App</strong></p> <pre><code>public class Main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); List&lt;Datum&gt; data = new ArrayList&lt;Datum&gt;(); data.add(new Datum("FIRST", "One line of text.")); data.add(new Datum("SECOND", "Two lines of text. Two lines of text. Two lines of text.")); data.add(new Datum("THIRD", "Three or more lines of text. Three or more lines of text. Three or more lines of text. Three or more lines of text. Three or more lines of text. Three or more lines of text.")); data.add(new Datum("FOURTH", "One line of text, again.")); ListView leftList = (ListView) findViewById(R.id.my_list); leftList.setAdapter(new MyAdapter(this, R.layout.row, data)); } } class Datum { String left, right; Datum(String left, String right) { this.left = left; this.right = right; } } class MyAdapter extends ArrayAdapter&lt;Datum&gt; { List&lt;Datum&gt; data; int textViewResourceId; MyAdapter(Context context, int textViewResourceId, List&lt;Datum&gt; data) { super(context, textViewResourceId, data); this.data = data; this.textViewResourceId = textViewResourceId; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(textViewResourceId, null); } Datum datum = data.get(position); if (datum != null) { TextView leftView = (TextView) convertView.findViewById(R.id.left_text); TextView rightView = (TextView) convertView.findViewById(R.id.right_text); if (leftView != null) { leftView.setText(datum.left); } if (rightView != null) { rightView.setText(datum.right); } } return convertView; } }</code></pre> <p><img src="https://lh5.googleusercontent.com/_VZJksQ6kepc/TbOWetJ3BMI/AAAAAAAAAGw/nslA28bkfH0/s800/Q5767236_ListView_with_Single_and_Double_Lines.png" /></p>