2012-06-01 2 views
0

В моем методе onCreate я вызываю другие методы, а именно fillData() и fillImages. Что делает fillData, оно заполняет строку в Listview с текстом, fillImages помещает изображение в строку. Все идет нормально. Очевидно, когда я ТОЛЬКО вызываю fillData в моем методе onCreate, появляется только текст. То же самое происходит, когда я просто вызываю fillImages.Почему мой SimpleCursorAdapter переопределяет мой другой SimpleCursorAdapter?

Проблема заключается в том, что я вызываю оба из них только содержание метода, который я назвал последним. Пример: Когда я называю это:

@Override 
public void onCreate() { 
    //Here is some content left away that is not important. 
    fillData(); 
    fillImages() 
} 

я получаю только содержание fillImages (метод).

Что я делаю неправильно? Ниже вы найдете код для моих методов onCreate(), fillData() и fillImages().

ОБНОВЛЕНИЕ: КАК Я РЕШЯ ЭТУ ПРОБЛЕМУ ???

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.reminder_list); 
    mDbHelper = new RemindersDbAdapter(this); 
    mImageHelper = new ImageAdapter(this); 
    mDbHelper.open(); 
    mImageHelper.open(); 
    fillData(); 
    fillImages(); 
    registerForContextMenu(getListView()); 
} 

// 
// Fills the ListView with the data from the SQLite Database. 
// 
private void fillData() { 
    Cursor remindersCursor = mDbHelper.fetchAllReminders(); 
    startManagingCursor(remindersCursor); 

    // Creates an array with the task title. 
    String[] from = new String[] {RemindersDbAdapter.KEY_TITLE, RemindersDbAdapter.KEY_BODY}; 

    // Creates an array for the text. 
    int[] to = new int[] {R.id.text1, R.id.text2}; 

    // SimpleCursorAdapter which is displayed. 
    SimpleCursorAdapter reminders = new SimpleCursorAdapter(this, R.layout.reminder_row, remindersCursor, from, to); 
    setListAdapter(reminders); 

} 

// 
// Fills the ListView with the images from the SQLite Database. 
// 
private void fillImages() { 
    Cursor imageCursor = mImageHelper.fetchAllImages(); 
    startManagingCursor(imageCursor); 

    // Creates an array with the image path. 
    String[] fromImage = new String[] {ImageAdapter.KEY_IMAGE}; 

    // Creates an array for the text. 
    int[] toImage = new int[] {R.id.icon}; 

    // SimpleCursorAdapter which is displayed. 
    SimpleCursorAdapter images = new SimpleCursorAdapter(this, R.layout.reminder_row, imageCursor, fromImage, toImage); 
    setListAdapter(images); 
} 
+0

Как реализованы ваши ряды? Когда вы устанавливаете адаптер списка на изображения, он больше не настроен на напоминания (а на изображениях нет данных напоминания, очевидно, поэтому нет текста) – matt5784

+0

Являются ли изображения и текст хранятся в разных таблицах в вашей базе данных? – Ole

+0

Да, они хранятся в отдельных базах данных. Любые идеи решения? – user1420042

ответ

2

Почему мой SimpleCursorAdapter сведет другой SimpleCursorAdapter?

Вы используете термин override. Переопределение метода - это когда подкласс обеспечивает конкретную реализацию метода, который предоставляется в его суперклассе. Это совершенно не связано с проблемой, с которой вы сталкиваетесь.

Что я делаю неправильно?

Причина, по которой ваш код не работает, заключается в том, что вы вызываете setListAdapter дважды. Второй вызов setListAdapater несвязывает первый адаптер, а затем привязывает второй адаптер к вашему ListView, что делает ваш первый звонок совершенно бесполезным. У вашего ListActivityListView может быть только один адаптер (так что вам нужно будет как-то объединить ваши реализации двух адаптеров).

+0

Проблема в том, что я использую две базы данных SQl. Поэтому мне нужны эти два SimpleCursorAdapters. Любые идеи для решения этой проблемы ??? – user1420042

+0

SQL позволяет запрашивать две таблицы в одном выражении с помощью предложения 'JOIN'. Возможно, [** this **] (http://stackoverflow.com/questions/3277908/best-way-to-join-tables-using-sqlite-in-android) поможет вам начать работу. –

1

вы установлены два setListAdapter, используя как метод и последнее setListAdapter(images); поэтому список установлен только последние данные адаптера ...

Смежные вопросы