[update] Refactor with BaseActivity and BaseViewModel
1 parent 189b6a4 commit aa6fb560da65a3eb71325aa3fd5438689d9d8ada
KeijuMatsumoto authored on 22 Dec 2017
Showing 2 changed files
View
86
app/src/main/java/com/example/sprout/refactor/activity/RegistrationActivity.java
package com.example.sprout.refactor.activity;
 
import android.content.Intent;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
 
import com.example.sprout.R;
import com.example.sprout.databinding.RfActivityRegistrationBinding;
import com.example.sprout.refactor.viewmodel.RegistrationViewModel;
 
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
 
/**
* アカウント登録のActivity
*
* @author matsumoto_k
*/
public class RegistrationActivity extends AppCompatActivity {
public class RegistrationActivity extends BaseActivity {
 
private RfActivityRegistrationBinding binding = null;
private RegistrationViewModel registrationViewModel = null;
private final CompositeDisposable subscriptions = new CompositeDisposable();
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
 
@Override
protected void onResume() {
super.onResume();
subscribe();
addUiObserver(registrationViewModel);
}
 
@Override
protected void onPause() {
super.onPause();
dispose();
}
 
private void subscribe() {
// トーストの購読
subscriptions.add(
registrationViewModel.getToastMessanger()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(toastMessage -> {
switch (toastMessage.getLength()) {
case SHORT:
Toast.makeText(this, toastMessage.getMessage(), Toast.LENGTH_SHORT).show();
break;
case LONG:
Toast.makeText(this, toastMessage.getMessage(), Toast.LENGTH_LONG).show();
break;
}
})
);
// 画面遷移の購読
subscriptions.add(
registrationViewModel.getNavigationMessenger()
.observeOn(Schedulers.computation())
.subscribe(navigationMessage -> {
switch (navigationMessage.getType()) {
case Start:
startActivity(new Intent(RegistrationActivity.this, navigationMessage.getClazz()));
break;
case Finsih:
finish();
}
})
);
}
 
private void dispose() {
subscriptions.dispose();
removeUiObserver();
}
}
View
12
app/src/main/java/com/example/sprout/refactor/viewmodel/RegistrationViewModel.java
import com.example.sprout.refactor.model.RegistrationModel;
import com.example.sprout.refactor.util.PreferenceUtil;
 
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
 
/**
* アカウント登録のViewModel
*
 
private ObservableField<String> editUserName = new ObservableField<>("");
private RegistrationModel registrationModel = ModelLocator.get().getRegistrationModel();
private PreferenceUtil preferenceUtil = PreferenceUtil.getInstance();
private CompositeDisposable subscriptions = new CompositeDisposable();
 
public RegistrationViewModel() {
}
 
navigationMessenger.navigateTo(new NavigationMessage(NavigationMessage.Type.Start, RoomListActivity.class));
navigationMessenger.navigateTo(new NavigationMessage(NavigationMessage.Type.Finsih));
}
subscribe();
}
 
@Override
public void onPause() {
super.onPause();
dispose();
}
 
private void subscribe() {
subscriptions.add(
})
);
}
 
private void dispose() {
subscriptions.dispose();
}
 
/**
* 登録ボタンクリック
*
* @param userName