Java 将数据显示到RecyclerView中

Java 将数据显示到RecyclerView中,java,android,android-sqlite,Java,Android,Android Sqlite,我一直不明白SQL数据库是如何工作的。所以我搜索了一下,找到了图书馆。我还在试 我想使用RecyclerAdapter将数据显示到RecyclerView中。我一直在使用它,我知道如何使用它,但只使用CloudFireStore。所以我的问题是:如何显示我在RecyclerView中找到的数据库库中的数据 我已经编写了适配器代码并创建了模型类。我仍然需要显示数据的部分 以下是读取所有数据的方法: Cursor res = easyDB.getAllData(); while (res.moveT

我一直不明白SQL数据库是如何工作的。所以我搜索了一下,找到了图书馆。我还在试

我想使用
RecyclerAdapter
将数据显示到
RecyclerView
中。我一直在使用它,我知道如何使用它,但只使用CloudFireStore。所以我的问题是:如何显示我在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);

        }

    }

}

有什么帮助吗?

您必须遍历光标并从中创建一个列表,您的
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();
List userList=new ArrayList();
if(cursor.moveToFirst()){
做{
int anIntegerVariable=cursor.getInt(columnIndex);
String aStringVariable=cursor.getString(columnIndex);
用户=新用户();
setId(一个整数变量();
user.setName(aStringVariable);
添加(用户);
}while(cursor.moveToNext());
}
cursor.close();

您应该看看Room,它是推荐用于android应用程序的数据库库。

您必须从DB游标准备用户列表,并使用它来
回收视图
。检查以下内容:

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);
List userList=new ArrayList();
EasyDB EasyDB=EasyDB.init(这是数据库名称).setTableName(表名称);
Cursor res=easyDB.getAllData();
如果(res!=null&&res.getCount()>0){
res.moveToFirst();
做{
int id=res.getInt(0);
String name=res.getString(1);
字符串传递=res.getString(2);
添加(新用户(id,name,pass));
}while(res.moveToNext());
}
res.close();
RecyclerView RecyclerView=findViewById(R.id.recycler\u视图);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
UsersRecyclerAdapter=新的UsersRecyclerAdapter(这是userList);
recyclerView.setAdapter(适配器);

添加您的型号和适配器code@Md.Asaduzzaman问题已更新。检查我的回答我正在显示另一个活动中的用户。因此,当我单击按钮启动该活动时,会出现以下错误:
无法启动活动组件信息:android.database.sqlite.SQLiteException:不是错误(代码0)
添加完整的StackTrace,如果可能的话,还可以添加代码的这一部分,也可以使用
int-aniintegervariable=res.getInt(0);String-aStringVariable=res.getString(1)
而不是
columnIndex
,等等!我想我发现了问题。我应该先初始化数据库。但是怎么做呢?我应该像第一次创建数据库时那样做吗?像这里这样还是有其他方法?是的,首先必须创建表,然后插入数据,然后查询以显示data
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);