简体   繁体   English

如何使用列表中的异步任务从android中的房间表中获取所有数据

[英]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. 如何使用asynctaskthread函数获取所有行。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM