ListActivity или проблема с XML? - PullRequest
3 голосов
/ 28 января 2011

У меня довольно большое количество кода, написанного, когда я решил использовать ORMLite.

После прочтения документа я обнаружил, что мне нужно расширить как:

MyClass extends OrmLiteBaseActivity<DatabaseHelper>

, но яуже расширили его с помощью ListActivity.

Возможно ли это сделать без расширения OrmLiteBaseActivity?

Tnx заранее.

Ответы [ 2 ]

7 голосов
/ 28 января 2011

Продлевать OrmLiteBaseActivity не требуется.Вам просто нужно самим управлять большим количеством функций утилиты.

Лучшим вариантом будет создать свой собственный DatabaseHelper внутри своей деятельности и управлять количеством пользователей в нем и отбрасывать его, когдаэто сделано, будучи использованным.Вообще говоря, это утилита, которую OrmLiteBaseActivity дает вам.Механизм, который будет управлять объектами вашей базы данных для вас.Это просто удобство.


Пример:

private static Dao<Agent, Object> agentDao = null;
public void someMethod() {
    if(agentDao == null){
      helper = (MyDBHelper) OpenHelperManager.getHelper(getContext());
      try {
        agentDao = helper.getAgentDao();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }

Я реализовал метод для возврата моих DAO в классе MyDBHelper.Взгляните на ORMLite Android Javadoc , а также на более общий ORMLite Core Javadoc .Есть много хороших примеров.

1 голос
/ 28 января 2011

[@ Ник отвечает хорошо, но я подумала, что добавлю больше информации.]

В ORMLite отсутствует класс OrmLiteBaseListActivity, добавленный в версии 4.10 - извините за промах.Тем временем вы можете легко создать свою собственную версию этого класса, скопировав класс OrmLiteBaseTabActivity, изменив класс, который расширяется с TabActivity до ListActivity.Затем измените все ваши классы активности списка, чтобы расширить этот новый класс.После выхода 4.10 вы можете вернуться и удалить класс.

Например:

public abstract class OrmLiteBaseListActivity<H extends OrmLiteSqliteOpenHelper>
    extends ListActivity {
    // insert contents of the OrmLiteBaseTabActivity class here
}
...