我是android studio的新手,我才刚刚开始学习它。我学会了从房间数据库中获取数据并将其粘贴到Recyclerview中。现在我只想从会议室数据库中获取一行数据。在此行中,有ID,用户名和user_telephone_number。所以我创建了UserEntity,UserDao,Database,UserRepository,UserViewModel,但我陷入了困境。当我在前面提到的所有人员之后使用Recyclerview进行相同操作时,我都创建了RecyclerView.Adapter,在这种情况下,我不确定我是否需要Adapter还是有其他方法? ,下面是我到目前为止所做的代码。
道
@Dao
public interface UserDao {
@Insert
void insert(UserEntity userEntity);
@Update
void update(UserEntity userEntity);
@Delete
void delete(UserEntity userEntity);
@Query("DELETE FROM user_table")
void deleteAllUsers();
@Query("SELECT * FROM user_table")
LiveData<List<UserEntity>> getAllUsers();
}
实体
@Entity(tableName = "user_table")
public class UserEntity {
@PrimaryKey(autoGenerate = true)
private int id;
private String user_name;
private String user_telephone_number;
public UserEntity(String user_name, String user_telephone_number) {
this.user_name = user_name;
this.user_telephone_number = user_telephone_number;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public String getUser_name() {
return user_name;
}
public String getUser_telephone_number() {
return user_telephone_number;
}
}
存储库(我知道AsyncTask已过时,它将是下一课/问题)
public class UserRepository {
private UserDao userDao;
private LiveData<List<UserEntity>> allUsers;
public UserRepository(Application application) {
HandymanDatabase handymanDatabase = HandymanDatabase.getInstance(application);
userDao = handymanDatabase.userDao();
allUsers = userDao.getAllUsers();
}
public void insert(UserEntity userEntity) {
new InsertUserAsyncTask(userDao).execute(userEntity);
}
public void update(UserEntity userEntity) {
new UpdateUserAsyncTask(userDao).execute(userEntity);
}
public void delete(UserEntity userEntity) {
new DeleteUserAsyncTask(userDao).execute(userEntity);
}
public void deleteAllUsers() {
new DeleteAllUsersAsyncTask(userDao).execute();
}
public LiveData<List<UserEntity>> getAllUsers() {
return allUsers;
}
private static class InsertUserAsyncTask extends AsyncTask<UserEntity, Void, Void> {
private UserDao userDao;
private InsertUserAsyncTask(UserDao userDao) {
this.userDao = userDao;
}
@Override
protected Void doInBackground(UserEntity... userEntities) {
userDao.insert(userEntities[0]);
return null;
}
}
private static class UpdateUserAsyncTask extends AsyncTask<UserEntity, Void, Void> {
private UserDao userDao;
private UpdateUserAsyncTask(UserDao userDao) {
this.userDao = userDao;
}
@Override
protected Void doInBackground(UserEntity... userEntities) {
userDao.update(userEntities[0]);
return null;
}
}
private static class DeleteUserAsyncTask extends AsyncTask<UserEntity, Void, Void> {
private UserDao userDao;
private DeleteUserAsyncTask(UserDao userDao) {
this.userDao = userDao;
}
@Override
protected Void doInBackground(UserEntity... userEntities) {
userDao.delete(userEntities[0]);
return null;
}
}
private static class DeleteAllUsersAsyncTask extends AsyncTask<Void, Void, Void> {
private UserDao userDao;
private DeleteAllUsersAsyncTask(UserDao userDao) {
this.userDao = userDao;
}
@Override
protected Void doInBackground(Void... voids) {
userDao.deleteAllUsers();
return null;
}
}
}
ViewModel
public class UserViewModel extends AndroidViewModel {
private UserRepository userRepository;
public LiveData<List<UserEntity>> allUsers;
public UserViewModel(@NonNull Application application) {
super(application);
userRepository = new UserRepository(application);
allUsers = userRepository.getAllUsers();
}
public void insert(UserEntity userEntity) {
userRepository.insert(userEntity);
}
public void update(UserEntity userEntity) {
userRepository.update(userEntity);
}
public void delete(UserEntity userEntity) {
userRepository.delete(userEntity);
}
public void deleteAllUsers() {
userRepository.deleteAllUsers();
}
public LiveData<List<UserEntity>> getAllUsers() {
return allUsers;
}
}
片段
public class UserFragment extends Fragment {
private UserViewModel userViewModel;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = getLayoutInflater().inflate(R.layout.fragment_user, container, false);
final TextView textViewUserName = view.findViewById(R.id.textViewUserName);
TextView textViewUserPhone = view.findViewById(R.id.textViewUserPhone);
userViewModel = new ViewModelProvider(this).get(UserViewModel.class);
userViewModel.getAllUsers().observe(getViewLifecycleOwner(), new Observer<List<UserEntity>>() {
@Override
public void onChanged(List<UserEntity> userEntities) {
**---> Here I'm stuck <---**
}
});
return view;
}
}
非常感谢您提供的帮助。