Может ли кто-нибудь помочь мне найти способ показать поля нового пользователя (недавно зарегистрированного) в активности приложения Android Studio? - PullRequest
3 голосов
/ 22 марта 2019

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

У меня есть хорошая идея, как показать 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;
}

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

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

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

Буду очень признателен, если кто-нибудь сможет мне помочь с этим.

1 Ответ

3 голосов
/ 22 марта 2019

Вы можете использовать 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;
}
...