Giải pháp chuyển đổi số trọn gói cho doanh nghiệp Việt

Xây dựng view model cho item - Tài liệu lập trình android

Tài liệu lập trình android

← Toàn bộ tài liệu


Bước 13: Xây dựng view model cho item

Bài 13/36 Xem dạng sách

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

 

Sơ đồ quan hệ các bảng

Table Name: {{table.name}}
Num Name Type
{{field_index+1}}
{{field.name}} {{field.type}}

Hỏi đáp

Gửi với tên {{comment_full_name}}

Chưa có câu hỏi nào cho bài này.

Zalo 0936.006.058 Hotline 0936.006.058