Кто-нибудь может помочь мне найти способ показать поля нового пользователя (недавно зарегистрированного) в activity приложения Android Studio?

#java #android #android-sqlite

#java #Android #android-sqlite

Вопрос:

Я разрабатываю приложение, которое требует регистрации пользователя, база данных (SQLite) содержит три таблицы: таблицу cliente, в которой есть все, что есть в таблице usuario, таблицу trabalhador, в которой есть еще две строки, которых нет в таблице usuario, и таблицу usuario, в которой есть вся информация для зарегистрированных пользователей, но я не уверен, нужен ли еще идентификатор для этих двух таблиц, таблица trabalhador и таблица клиентов, потому что, если я зарегистрирую любого из них, оба будут обычными, но у меня были сомнения, когда я думал о том, как показать вновь зарегистрированному пользователю его недавно зарегистрированную информацию.

У меня есть хорошая идея, как показать ArrayList с информацией обо всех уже зарегистрированных пользователях:

 public ArrayList<Usuario> getAllUsuarios() {
ArrayList<Usuario> listaUsuarios = new ArrayList<Usuario>();
String query = "SELECT    *  FROM  "   TABELA_USUARIOS;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(query, null);
if (cursor.moveToFirst()) {
    do {
        Usuario usuario = cursorToUsuario(cursor); //método criado no banco de dados
        listaUsuarios.add(usuario);

    } while
            (cursor.moveToNext());
}
return listaUsuarios;
  

}

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

 public Usuario getUsuario(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(
        TABELA_USUARIOS,
        COLUNAS,
        "id = ?",
        new String[]{String.valueOf(id)},
        null, null, null, null);
if (cursor == null) {
    return null;
} else {
    cursor.moveToFirst();
    Usuario usuario = cursorToUsuario(cursor); //método também criado
    return usuario;
}
  

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

     final ArrayList<Usuario> listaUsuarios = bd.getAllUsuarios();
ArrayAdapter<Usuario> adapter = new ArrayAdapter<Usuario>(this,
        android.R.layout.simple_list_item_1, listaUsuarios);
lvListaUsuarios.setAdapter(adapter);
  

Я могу показать всех пользователей в этом activity, но у меня возникли проблемы с получением правильной логики для отображения только последнего пользователя…

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

Комментарии:

1. пожалуйста, попробуйте использовать Ctrl Alt L перед копированием-вставкой кода

Ответ №1:

Вы можете либо использовать ORDER BY DESC , либо использовать cursor.moveToLast() .

с ORDER BY DESC :

 public Usuario getLastUsuarios() {
    String query = "SELECT    *  FROM  "   TABELA_USUARIOS   " ORDER BY id DESC";
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(query, null);
    if (cursor.moveToFirst()) {
        return cursorToUsuario(cursor);
    }

    // not found.
    return null;
}
  

с cursor.moveToLast(); :

 public Usuario getLastUsuario() {
   SQLiteDatabase db = this.getReadableDatabase();
   // get all rows in table.
   Cursor cursor = db.query(TABELA_USUARIOS, null, null, null, null, null, null);

   Usuario usuario = null;
   if (cursor != null) {
     cursor.moveToLast();
     usuario = cursorToUsuario(cursor);
   }

   cursor.close();
   return usuario;
}
  

Комментарии:

1. Спасибо, вы очень помогли

2. @GlaudistonNeto: Всегда пожалуйста. Если этот ответ решит проблему, пожалуйста, отметьте его как принятый ответ.