我想为不同的用户显示不同的列表,但是我为所有用户获取相同的数据。我想建立一对一的关系。我在这里应该怎么做才能为不同的用户显示不同的列表。有什么建议吗?
我的待办事项
@Entity(tableName = "task_table")
public class TODO {
@PrimaryKey(autoGenerate = true)
int id;
private String title;
private String description;
private String date_button;
private String time_button;
private int priority;
public TODO(String title, String description, String date_button, String time_button, int priority) {
this.title = title;
this.description = description;
this.date_button = date_button;
this.time_button = time_button;
this.priority = priority;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public String getTitle() {
return title;
}
public String getDescription() {
return description;
}
public String getDate_button() {
return date_button;
}
public String getTime_button() {
return time_button;
}
public int getPriority() {
return priority;
}
}
我的用户
@Entity (tableName = "User")
public class User implements Serializable {
@PrimaryKey(autoGenerate = true)
@NonNull
private int id;
private String userName;
private String password;
private String email ;
public User(String userName, String password, String email) {
this.userName = userName;
this.password = password;
this.email = email;
}
@NonNull
public int getId() {
return id;
}
public void setId(@NonNull int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", password='" + password + '\'' +
", email='" + email + '\'' +
'}';
}
}
*我的用户TODO
public class UserTODO {
@Embedded
User user;
@Relation(
parentColumn = "id",
entityColumn = "id",
entity = TODO.class)
public List<TODO> userTODO;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public List<TODO> getUserTODO() {
return userTODO;
}
public void setUserTODO(List<TODO> userTODO) {
this.userTODO = userTODO;
}
}
我的AppDatabase
@Database(entities = {TODO.class, User.class} , version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao getUserDao();
private static AppDatabase instance;
public abstract TODODao taskDao();
public static synchronized AppDatabase getInstance(Context context){
if (instance == null) {
instance = Room.databaseBuilder(context.getApplicationContext(),
AppDatabase.class, "task_database")
.fallbackToDestructiveMigration()
.addCallback(roomCallback)
.build();
}
return instance;
}
private static RoomDatabase.Callback roomCallback = new RoomDatabase.Callback(){
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
new PopulateDbAsyncTask(instance).execute();
}
};
private static class PopulateDbAsyncTask extends AsyncTask<Void, Void, Void> {
private TODODao TODODao;
private PopulateDbAsyncTask(AppDatabase db) {
TODODao = db.taskDao();
}
@Override
protected Void doInBackground(Void... voids) {
TODODao.insert(new TODO("Title 1", "Description 1", "Add Date ?", "Your Time ?",1));
return null;
}
}
}
我的TODO存储库
public class TODORepository {
private TODODao TODODao;
private LiveData<List<TODO>> allTasks;
public TODORepository(Application application){
AppDatabase database = AppDatabase.getInstance(application);
TODODao = database.taskDao();
allTasks = TODODao.getAllNotes();
}
public void insert(TODO TODO){
new InsertTaskAsyncTask(TODODao).execute(TODO);
}
public void update(TODO TODO){
new UpdateTaskAsyncTask(TODODao).execute(TODO);
}
public void delete(TODO TODO){
new DeleteTaskAsyncTask(TODODao).execute(TODO);
}
public void deleteAllTasks(){
new DeleteAllTasksAsyncTask(TODODao).execute();
}
public LiveData<List<TODO>> getAllTasks() {
return allTasks;
}
private static class InsertTaskAsyncTask extends AsyncTask<TODO, Void, Void> {
private com.example.todosaman.Database.Dao.TODODao TODODao;
private InsertTaskAsyncTask(TODODao TODODao) {
this.TODODao = TODODao;
}
@Override
protected Void doInBackground(TODO... TODOS) {
TODODao.insert(TODOS[0]);
return null;
}
}
private static class UpdateTaskAsyncTask extends AsyncTask<TODO, Void, Void> {
private TODODao TODODao;
private UpdateTaskAsyncTask(TODODao TODODao) {
this.TODODao = TODODao;
}
@Override
protected Void doInBackground(TODO... TODOS) {
TODODao.update(TODOS[0]);
return null;
}
}
private static class DeleteTaskAsyncTask extends AsyncTask<TODO, Void, Void> {
private TODODao TODODao;
private DeleteTaskAsyncTask(TODODao TODODao) {
this.TODODao = TODODao;
}
@Override
protected Void doInBackground(TODO... TODOS) {
TODODao.delete(TODOS[0]);
return null;
}
}
private static class DeleteAllTasksAsyncTask extends AsyncTask<Void, Void, Void> {
private TODODao TODODao;
private DeleteAllTasksAsyncTask(TODODao TODODao) {
this.TODODao = TODODao;
}
@Override
protected Void doInBackground(Void... voids) {
TODODao.deleteAllNotes();
return null;
}
}
}
我的TODOViewModel
public class TODOViewModel extends AndroidViewModel {
private TODORepository repository;
private LiveData<List<TODO>> allTasks;
public TODOViewModel(@NonNull Application application) {
super(application);
repository = new TODORepository(application);
allTasks = repository.getAllTasks();
}
public void insert(TODO TODO) {
repository.insert(TODO);
}
public void update(TODO TODO) {
repository.update(TODO);
}
public void delete(TODO TODO){
repository.delete(TODO);
}
public void deleteAllTasks() {
repository.deleteAllTasks();
}
public LiveData<List<TODO>> getAllTasks(){
return allTasks;
}
}