Giải pháp chuyển đổi số trọn gói cho doanh nghiệp Việt
Một view mode dùng để kết gọi đến api lấy dữ liệu trả về và thực hiện các theo tác trả dữ liệu cho một adapter
Tên file : ItemViewModel
Nơi lưu: java/com/vantinviet/adayroionline/viewmodel/item
Chú ý là bạn cần tạo một thư mục item nhé
Nội dung file
package com.vantinviet.adayroionline.viewmodel.item;
import com.vantinviet.adayroionline.Config;
import com.vantinviet.adayroionline.repository.item.ItemRepository;
import com.vantinviet.adayroionline.utils.AbsentLiveData;
import com.vantinviet.adayroionline.viewmodel.common.PSViewModel;
import com.vantinviet.adayroionline.viewobject.Item;
import com.vantinviet.adayroionline.viewobject.common.Resource;
import java.util.List;
import javax.inject.Inject;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Transformations;
public class ItemViewModel extends PSViewModel {
private final LiveData<Resource<List<Item>>> itemsData;
private MutableLiveData<TmpDataHolder> itemsObj = new MutableLiveData<>();
private final LiveData<Resource<Boolean>> nextPageItemsData;
private MutableLiveData<TmpDataHolder> nextPageItemsObj = new MutableLiveData<>();
private final LiveData<Resource<Item>> itemByIdData;
private MutableLiveData<ItemByIdTmpDataHolder> itemByIdObj = new MutableLiveData<>();
public String shopName, shopId;
@Inject
ItemViewModel(ItemRepository repository) {
itemsData = Transformations.switchMap(itemsObj, obj -> {
if (obj == null) {
return AbsentLiveData.create();
}
return repository.getItemList(obj.limit, obj.offset);
});
nextPageItemsData = Transformations.switchMap(nextPageItemsObj, obj -> {
if (obj == null) {
return AbsentLiveData.create();
}
return repository.getNextPageItemList(Config.API_KEY, obj.limit, obj.offset);
});
itemByIdData = Transformations.switchMap(itemByIdObj, obj -> {
if (obj == null) {
return AbsentLiveData.create();
}
return repository.getItemById(obj.id);
});
}
public void setItemsObj(String limit, String offset) {
TmpDataHolder tmpDataHolder = new TmpDataHolder(limit, offset);
this.itemsObj.setValue(tmpDataHolder);
}
public LiveData<Resource<List<Item>>> getItemsData() {
return itemsData;
}
public void setNextPageItemsObj(String limit, String offset) {
TmpDataHolder tmpDataHolder = new TmpDataHolder(limit, offset);
this.nextPageItemsObj.setValue(tmpDataHolder);
}
public LiveData<Resource<Boolean>> getNextPageItemsData() {
return nextPageItemsData;
}
public void setItemByIdObj(String id) {
ItemByIdTmpDataHolder itemByIdTmpDataHolder = new ItemByIdTmpDataHolder(id);
this.itemByIdObj.setValue(itemByIdTmpDataHolder);
}
public LiveData<Resource<Item>> getItemByIdData() {
return itemByIdData;
}
class TmpDataHolder {
String limit, offset;
public TmpDataHolder(String limit, String offset) {
this.limit = limit;
this.offset = offset;
}
}
class ItemByIdTmpDataHolder {
String id;
private ItemByIdTmpDataHolder(String id) {
this.id = id;
}
}
}
Chú ý Item ở trong nội dung file này là một đối tượng cụ thể mà chúng ta cần theo tác với đối tượng đó.
Việc xây dựng hàm, class các bạn cần phải nắm được trong lập trình hướng đối tượng
Ngoài ra còn có một số những nội dung khác ở class này nhưng trước mắt các bạn chưa cần phải nắm hết, chỉ cần nắm được các nội dung nêu ở trên
Chưa có câu hỏi nào cho bài này.