2017-12-03 12 views
0

私はRxjavaでMVVMを使用していますが、これはRxjavaを初めて使用するときです。Spinnerのレスポンスを使用して項目を取り込みたいと思います。スピナーはどのように動的に配置されますか?MVVMパターンのRXを使用してSpinnerにアイテムを動的に配置しますか?

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(); 
} 

ホーこれを解決することができます。私はレスポンスを得ることができますが、Spinnerでそれを設定することはできません。

答えて

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); 
        } 

はただのインターフェイスを作り、あなたが

を配置したい場所をクラスで実装
関連する問題