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