首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将向日葵应用程序ViewModel更改为只显示植物列表?

将向日葵应用程序ViewModel更改为只显示植物列表?
EN

Stack Overflow用户
提问于 2019-05-06 02:18:27
回答 1查看 48关注 0票数 0

我正在尽我最大的努力使用谷歌的向日葵应用程序作为我的应用程序的基础,如何改变对变量"growZoneNumber“的依赖,使其只返回所有植物?

这是从google官方kotlin版本转换过来的java代码:

代码语言:javascript
复制
package com.google.samples.apps.sunflower.viewmodels;

import com.google.samples.apps.sunflower.data.Plant;
import com.google.samples.apps.sunflower.data.PlantRepository;

import java.util.List;

import androidx.annotation.NonNull;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Transformations;
import androidx.lifecycle.ViewModel;

/**
 * Created by Shawn Wang on 3/26/19.
 */
public class PlantListViewModel extends ViewModel {
    private static final int NO_GROW_ZONE = -1;

    private PlantRepository plantRepository;

    private MutableLiveData<Integer> growZoneNumber;

    public LiveData<List<Plant>> plants;

    PlantListViewModel(@NonNull PlantRepository plantRepository) {
        super();
        this.plantRepository = plantRepository;
        this.growZoneNumber = new MutableLiveData<>(-1);
        this.plants = Transformations.switchMap(growZoneNumber, it -> {
            if (it == NO_GROW_ZONE) {
                return this.plantRepository.getPlants();
            } else {
                return this.plantRepository.getPlantsWIthGrowZoneNumber(it);
            }
        });
    }

    public void setGrowZoneNumber(int num) {
        this.growZoneNumber.setValue(num);
    }

    public void cleanGrowZoneNumber() {
        this.growZoneNumber.setValue(NO_GROW_ZONE);
    }

    public boolean isFiltered() {
        return this.growZoneNumber.getValue() != NO_GROW_ZONE;
    }
}

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-06 05:26:02

我花了一段时间才弄明白,但找到了答案(当然,内部的模型略有不同

公共类PinViewModel扩展了ViewModel {

代码语言:javascript
复制
private PinRepository pinRepository;

PinViewModel(@NonNull PinRepository pinRepository) {
    this.pinRepository = pinRepository;
}

public LiveData<List<Pin>> getPins() {
    return pinRepository.getPins();
}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55994998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档