[英]How to get all data from room table in android using async Task in a List
I want to get List<Model>
from Room
database in Android without using LiveData
. 我想在Android中从
Room
数据库获取List<Model>
而不使用LiveData
。 How to get all the rows using asynctask
or thread
function. 如何使用
asynctask
或thread
函数获取所有行。
First define get method in your DAO, consider you are getting all Users: 首先在你的DAO中定义get方法,考虑你得到所有用户:
UserModel: 的usermodel:
@Entity
public class UserModel {
@PrimaryKey
public int id;
public String first_name;
public String last_name;
}
User Data Access Object 用户数据访问对象
@Dao
public interface UserDao {
@Query("SELECT first_name, last_name FROM user")
public List<UserModel> getAllUsers();
}
Create you application db wrapper class 创建应用程序db wrapper类
@Database(entities = {UserModel.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
}
get access to db use following code 使用以下代码访问db
public class UserServices{
private AppDatabase db ;
public UserServices(){
db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "database-name").build();
}
public List<UserModel> getAllUsers(){
return new GetUsersAsyncTask().exicute().get();
}
private class GetUsersAsyncTask extends AsyncTask<Void, Void,List<UserModel>>
{
@Override
protected Void doInBackground(Void... url) {
return db.getUserDao().getAllUsers();
}
}
}
Now access Users by calling 现在通过调用访问用户
UserServices userServices=new UserServices();
List<UserModel> users=userServices.getAllUsers();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.