Android会议室 - 关系和LiveData

问题描述 投票:0回答:1

我有一个Lure类,其中包含ArrayList类的LureImage,如下面的代码所示。在我的存储库中,我进行数据库调用以获取LiveData<List<Lure>>,然后执行AsyncTask以获取每个诱饵的List<LureImage>。我写的代码的问题是,它并不总是从数据库中获取List<LureImage>,结果是有时我的RecyclerView显示图像,有时它不显示。 (我在下面显示我的意思的截图)

public class Lure implements Serializable {

    private static final String TAG = "LURE";

    @PrimaryKey(autoGenerate = true)
    private int id;
    private String _lureName;
    private String _lureNotes;

    @Ignore
    private List<LureImage> lureImages = new ArrayList<>();

    public Lure() {

    }

    @Ignore
    public Lure(String lureName, String lureNotes) {
        this._lureName = lureName;
        this._lureNotes = lureNotes;
    }
}

从我的LureRepository类中,我设法从数据库中获取LiveData>然后我希望每个Lure从数据库中获取相应的Image类。我设法使用这种方法。

public LiveData<List<Lure>> getAllLures() {
        LiveData<List<Lure>> luresLiveData = lureDao.getAllLures();
        luresLiveData = Transformations.map(luresLiveData, new Function<List<Lure>, List<Lure>>() {
            @Override
            public List<Lure> apply(List<Lure> input) {
                for (final Lure lure : input) {
                    new GetLureImagesTask(lureDao).execute(lure);
                }
                return input;
            }
        });
        return luresLiveData;
    }

private static class GetLureImagesTask extends AsyncTask<Lure,Void,Void> {
        private LureDao lureDao;

        public GetLureImagesTask(LureDao lureDao) {
            this.lureDao = lureDao;
        }

        @Override
        protected Void doInBackground(Lure... lures) {
            lures[0].setLureImages(lureDao.getLureImages(lures[0].getId()));
            return null;
 }
    }

在这里我得到的图像,并在回收者视图中显示这里的图像没有被检索enter image description here

android android-asynctask android-room android-livedata android-mvvm
1个回答
0
投票

在适配器中获取图像。

    class YourAdapter() : RecyclerView.Adapter<Recyclerview.ViewHolder>() {

          override fun onBindViewHolder(holder: ViewHolder, position: Int) {
                   // place your asynctask here
          }
    }

希望这可以帮助。让我知道

© www.soinside.com 2019 - 2024. All rights reserved.