显示多对一关系,但我需要一对一关系

时间:2020-06-14 01:20:45

标签: java android

我想为不同的用户显示不同的列表,但是我为所有用户获取相同的数据。我想建立一对一的关系。我在这里应该怎么做才能为不同的用户显示不同的列表。有什么建议吗?

我的待办事项

@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;
}

}

0 个答案:

没有答案
相关问题