2017-12-03 11 views
0

Rxjava에서 MVVM을 사용하고 있습니다. Rxjava를 처음 사용하기 때문에 Spinner.But에서 응답을 통해 항목을 채 웁니다. 그렇게 할 수 없습니다. 회 전자를 어떻게 동적으로 채울 수 있습니까?MVVM 패턴의 RX를 사용하여 동적으로 항목을 넣으시겠습니까?

ApiInterface

@GET("client") 
    Observable<List<ClientListApi>> clientListApi(); 

RegisterFragmentVm

public void getClientList() { 

     ArrayList arrayList = new ArrayList(); 
     ApiInterface apiInterface = setRetrofit(); 
     apiInterface.clientListApi().subscribeOn(Schedulers.newThread()) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .subscribe(new Observer<List<ClientListApi>>() { 
        @Override 
        public void onSubscribe(Disposable d) { 

        } 

        @Override 
        public void onNext(List<ClientListApi> clientListApis) { 
         int position = 0; 

         System.out.println("size of arraylist" + clientListApis.size()); 
         for (int i = 0; i < position; i++) { 
          System.out.println("name" + clientListApis.get(position).getName()); 

         } 


        } 

        @Override 
        public void onError(Throwable e) { 

        } 

        @Override 
        public void onComplete() { 

        } 


       }); 

//  ArrayAdapter<String> sector_adapter = new ArrayAdapter<String>(mContext, R.layout.support_simple_spinner_dropdown_item, arrayList); 
//  sector_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
//  fragmentRegisterBinding.spinner.setAdapter(sector_adapter); 



    } 

RegisterFragment

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    super.onCreateView(inflater, container, savedInstanceState); 
    fragmentRegisterBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_register, container, false); 
    registerFragmentVm = new RegisterFragmentVm(getContext(), fragmentRegisterBinding); 
    fragmentRegisterBinding.setRegisterVm(registerFragmentVm); 
    registerFragmentVm.getClientList(); 

    return fragmentRegisterBinding.getRoot(); 
} 

호 이것을 해결할 수 있습니다. 응답을받을 수는 있지만 회 전자에서 채울 수는 없습니다.

답변

0

메이크업 인터페이스

public interface SpinnerBankName { 

    public void passBankName(List<ClientListApi> bankList); 
} 

VM

SpinnerBankName spinnerBankName; 
spinnerBankName = (SpinnerBankName) fragment; 
@Overrid 
    public void onNext(List<ClientListApi> clientListApis) { 
         spinnerBankName.passBankName(clientListApis); 
        } 

는 인터페이스를 확인하고

을 원하는 위치 클래스에서 구현