Отображение данных в RecyclerView - PullRequest
0 голосов
/ 31 октября 2019

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

Я хочу отобразить данные в RecyclerView, используя RecyclerAdapter. Я всегда работал с этим, и я знаю, как это сделать, но только с помощью Cloud Firestore. Итак, мой вопрос: как отобразить данные в той библиотеке базы данных, которые я нашел в RecyclerView?

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

Вот как читать все данные:

Cursor res = easyDB.getAllData();
while (res.moveToNext()) {
    int anIntegerVariable = res.getInt(columnIndex);
    String aStringVariable = res.getString(columnIndex);
}

User.java

public class User {

    String id, name, password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User(String id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }

    public User() {

    }
}

UsersRecyclerAdapater.java

public class UsersRecyclerAdapater extends RecyclerView.Adapter<UsersRecyclerAdapater.ViewHolder> {

    public List<User> userList;
    public Context context;

    public UsersRecyclerAdapater(Context context, List<User> userList) {

        this.userList = userList;
        this.context = context;

    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.user_list_item, parent, false);
        context = parent.getContext();

        return new ViewHolder(view);

    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {

        holder.setIsRecyclable(false);

        String id = userList.get(position).getId();
        String name = userList.get(position).getName();
        String password = userList.get(position).getPassword();

        holder.setIdView(id);
        holder.setName(name);
        holder.setPasswordView(password);

    }

    @Override
    public int getItemCount() {

        return userList.size();

    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        private TextView idView;
        private TextView nameView;
        private TextView passwordView;

        public View view;

        public ViewHolder(@NonNull View itemView) {

            super(itemView);
            view = itemView;

        }

        public void setIdView(String id) {

            idView = view.findViewById(R.id.user_id);
            idView.setText(id);

        }

        public void setName(String name) {

            nameView = view.findViewById(R.id.user_name);
            nameView.setText(name);

        }


        public void setPasswordView(String password) {

            passwordView = view.findViewById(R.id.user_password);
            passwordView.setText(password);

        }

    }

}

MainActivity.java

easyDB = EasyDB.init(this, DATABASE_NAME)
            .setTableName(TABLE_NAME)
            .addColumn(new Column(NAME_COLUMN, "TEXT"))
            .addColumn(new Column(PASSWORD_COLUMN, "TEXT"))
            .doneTableColumn();

    mainAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String name = mainName.getText().toString();
            String password = mainPassword.getText().toString();

            boolean done = easyDB.addData(1, name)
                    .addData(2, password)
                    .doneDataAdding();

            if (done) {
                Toast.makeText(MainActivity.this, "User added successfully", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(MainActivity.this, "User not added", Toast.LENGTH_SHORT).show();
            }

        }
    });

    mainRead.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            /*
            Cursor cursor = easyDB.getAllData();
            while (cursor.moveToNext()) {
                String name = cursor.getString(1);
                String password = cursor.getString(2);
                Toast.makeText(MainActivity.this, name + "\n" + password, Toast.LENGTH_SHORT).show();
            }
            */
            startActivity(new Intent(MainActivity.this, UsersActivity.class));

        }
    });

Любая помощь, пожалуйста?

Ответы [ 3 ]

1 голос
/ 31 октября 2019

Вы должны подготовить список пользователей из курсора БД и использовать его для RecyclerView. Проверьте ниже:

List<User> userList = new ArrayList<>();
EasyDB easyDB = EasyDB.init(this, DATABASE_NAME).setTableName(TABLE_NAME);
Cursor res = easyDB.getAllData();

if(res != null && res.getCount() > 0) {
    res.moveToFirst();
    do {
        int id = res.getInt(0);
        String name = res.getString(1);
        String pass = res.getString(2);
        userList.add(new User(id, name, pass));

    } while (res.moveToNext());
}
res.close();

RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
UsersRecyclerAdapater adapter = new UsersRecyclerAdapater(this, userList);
recyclerView.setAdapter(adapter);
0 голосов
/ 31 октября 2019

Вы должны взглянуть на Room, которая является рекомендуемой библиотекой базы данных для приложений Android. https://developer.android.com/training/data-storage/room

0 голосов
/ 31 октября 2019

Вам придется перебирать курсор и создавать из него список, и ваш RecyclerView примет этот список в качестве ввода.

List<User> userList = new ArrayList<>();
if (cursor.moveToFirst()) {
    do {
       int anIntegerVariable = cursor.getInt(columnIndex);
       String aStringVariable = cursor.getString(columnIndex);
       User user = new User();
       user.setId(anIntegerVariable();
       user.setName(aStringVariable);
       userList.add(user);
    } while (cursor.moveToNext());
}
cursor.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...