Похоже, вы делаете слишком много работы. Если ваши данные находятся в базе данных SQLite, вы можете использовать SimpleCursorAdapter со своим ListView, который сделает за вас тяжелую работу:
public class MyListActivity extends ListActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// The my_list_activity layout is the container for each
// item in the list.
setContentView(R.layout.my_list_activity);
// Create a database cursor for the data you want to query.
// Assumes your data is accessible via a ContentProvider.
// Note: db.CONTENT_URI is whatever URI your ContentProvider uses,
// and db.COL1 etc are constants that would name the columns you want.
cursor = getContentResolver().query(db.CONTENT_URI,
new String[] { db._ID, db.COL1, db.COL2, db.COL3 },
null, null, null);
// Bind the value in db.COL1 to the resource with the id text1, and so
// on for the other two columns.
//
// Assumes that the view has TextViews with IDs text1, text2, and text3.
String[] from= new String[] { db.COL1, db.COL2, db.COL3 };
int[] to = new int[] { R.id.text1, R.id.text2, R.id.text3 };
// Create the adapter, bound to the cursor, layout, and the mapping from
// column name to TextView ID.
//
// Assumes a layout called my_list_activity_item exists, with at least
// 3 views called text1, text2, and text3.
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this,
R.layout.my_list_activity_item, cursor, from, to);
setListAdapter(mAdapter);
}
}
Если ваших данных нет в базе данных SQLite, посмотрите на другие классы, производные от android.widget.BaseAdapter, чтобы узнать, подходит ли вам один из них.