Android Beginner: адаптер для простого просмотра или прямой запрос к БД? - PullRequest
1 голос
/ 08 сентября 2010

Во-первых, я действительно новичок в Android (<4 дня). </p>

Я пытаюсь понять, как данные базы данных связаны с представлениями и виджетами.

Я сделал несколько уроков и заметил, что адаптеры используются для связывания AdapterViews, которые являются (насколько я понимаю) представлениями, которые содержат несколько идентичных подпредставлений (например, списки, галереи и т. Д.). Таким образом, адаптер отвечает за создание этих подпредставлений и заполнение данных для каждого (поправьте меня, если я ошибаюсь).

Теперь, скажем, у меня есть представление списка, в котором перечислены, например, отели. Каждая строка в списке имеет название отеля и базовый рейтинг (например, 5 звезд). Теперь, когда вы нажимаете на отель в списке, появляется новое действие, показывающее детали этого конкретного отеля. Все данные находятся в базе данных. Я понимаю, что у вас есть адаптер для управления ссылкой для просмотра данных <-> для списка, но как лучше всего управлять данными для просмотра сведений об отеле (это не список, а всего лишь пара текстовых представлений и изображение для пример)?

Лучше ли просто передать идентификатор в намерении, а затем сделать так, чтобы операция подробностей самостоятельно извлекала данные из БД (в этом случае я сохраняю запрос в операции подробностей?)? Или вы получаете все поля, которые вам нужны, и ставите их прямо в цель? Вам нужен адаптер для представления, которое на самом деле не генерирует много похожих подпредставлений?

Я предполагаю, что краткое изложение моего вопроса состоит в том, что вы используете вместо адаптера, когда вы не имеете дело с представлениями адаптера, а просто с простыми простыми представлениями.

Спасибо за любую помощь, которую вы можете предоставить.

Ответы [ 2 ]

2 голосов
/ 08 сентября 2010

Лучше ли просто передать идентификатор в намерении, а затем выполнить операцию сведений, чтобы самостоятельно извлекать данные из БД (в этом случае я сохраняю запрос в операции сведений?)?

Вот что я бы порекомендовал.

Вам нужен адаптер для представления, которое на самом деле не генерирует много похожих подпредставлений?

Нет.Вы используете Adapter только с AdapterView (ListView, Spinner и т. Д.)

Я думаю, что краткое изложение моего вопроса состоит в том, что вы используете вместо адаптера, когдаВы имеете дело не с представлениями адаптера, а с простыми простыми представлениями.

Просто Cursor из базы данных.Получите поля из (одной) строки в Cursor, поместите их в виджеты EditText, а когда пользователь внесет изменения, обновите строку.

0 голосов
/ 12 января 2014

@ CommonsWare - удар.В качестве примера кода я смог высушить вещи, создав вспомогательный метод для динамической настройки TextViews немного чище.

В моем onCreate() у меня есть ряд следующих строк:

bindTextView(hotel, "uid");   // `hotel` is the Hotel object with attributes.

А затем я определяю bindTextView() ниже какследует:

protected void bindTextView( Hotel hotel, String attribute ) {

    try {

        // Get field for object dynamically.
        Field field = hotel.getClass().getField(attribute); 

        // Invoke field "getter" method to get value.
        String value = field.get(hotel).toString();                                                                   

        // Get resource id dynamically.
        int resourceId = R.id.class.getField(attribute).getInt(null);                                               

        // Get element with resource id.
        TextView element = (TextView) this.findViewById( resourceId );                                              

        // Finally, set the element's text value.
        element.setText( value );

    } catch (IllegalAccessException e) { e.printStackTrace();                                                       

    } catch (NoSuchFieldException e)   { e.printStackTrace(); }                                                     

}

Я фактически переместил этот вспомогательный метод в базовый класс Activity, так как он используется несколькими различными действиями.

Надеюсь, это поможетнекоторые люди поддерживают свою деятельность в чистоте.

JP

...