从RecyclerView适配器中的Room Persistence库查询数据

时间:2019-06-05 16:56:27

标签: java android android-recyclerview android-architecture-components

我正在尝试从我的recyclerview中查询特定数据。我附加了一张图片,以显示recyclerview的项目是什么。我目前使用的是图片的嵌套子recyclerview,但是我不介意是否必须使用textview和stringbuilder。我一直在使用专注于MVVM的codelabs格式化数据访问。基本上,在该图像中,针对该特定练习,我将使用输入来查询相关的详细信息。

enter image description here

问题是,我正在尝试在recyclerview中查询数据以获取特定的练习详细信息,但我不知道如何操作。如您所见,存储库和会议室数据库需要一个应用程序来调用方法,但是我不知道如何在onBindViewHolder的recyclerview适配器中实现该功能。

LogAdapter.java

    @Override
    public void onBindViewHolder(@NonNull LogHolder holder, int position) {
        LogEntity currentLog = getItem(position);
        holder.tvExerciseName.setText(currentLog.getExerciseName());
        long exerciseId = currentLog.getId();

        // I want to use exercideId as a query

        }
    }

LogRepository.java

public LogRepository(Application application){
        LogDatabase db = LogDatabase.getInstance(application);
        logDao = db.logDao();
        addTypeDao = db.addTypeDao();
    }
...
    public LiveData<List<AddRepsWeightsEntity>> getLogsRW(long id){
        return addTypeDao.getLogsRW(id);
    }

@Dao
public interface AddTypeDao {
    //RW
    @Insert
    void insertRW(AddRepsWeightsEntity addRepsWeightsEntity);

    @Update
    void updateRW(AddRepsWeightsEntity addRepsWeightsEntity);

    @Delete
    void deleteRW(AddRepsWeightsEntity addRepsWeightsEntity);

    @Query("SELECT * FROM AddRepsWeightsEntity WHERE logId = :logId ORDER BY id ASC")
    LiveData<List<AddRepsWeightsEntity>> getLogsRW(long logId);

如果这不是一个很好的做法,那么如果有人提出更好的解决方案,我将不胜感激。我现在才学习android studio已有几周了,这是我唯一能想到的。谢谢!

0 个答案:

没有答案