diff --git a/app/src/main/java/com/example/sprout/refactor/activity/RoomListActivity.java b/app/src/main/java/com/example/sprout/refactor/activity/RoomListActivity.java index 00c00eb..1b901eb 100644 --- a/app/src/main/java/com/example/sprout/refactor/activity/RoomListActivity.java +++ b/app/src/main/java/com/example/sprout/refactor/activity/RoomListActivity.java @@ -1,16 +1,11 @@ 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.RfActivityRoomListBinding; import com.example.sprout.refactor.adapter.RoomListAdapter; -import com.example.sprout.refactor.common.ActivityEvent; -import com.example.sprout.refactor.contract.ViewContract; import com.example.sprout.refactor.viewmodel.RoomListViewModel; /** @@ -18,44 +13,29 @@ * * @author matsumoto_k */ -public class RoomListActivity extends AppCompatActivity implements ViewContract { +public class RoomListActivity extends BaseActivity { + + private RoomListViewModel roomMainViewModel = null; + private RfActivityRoomListBinding binding = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - RfActivityRoomListBinding binding = DataBindingUtil.setContentView(this, R.layout.rf_activity_room_list); - RoomListViewModel roomMainViewModel = new RoomListViewModel(new RoomListAdapter(this), (ViewContract) this); + binding = DataBindingUtil.setContentView(this, R.layout.rf_activity_room_list); + roomMainViewModel = new RoomListViewModel(new RoomListAdapter(this)); binding.setViewModel(roomMainViewModel); getLifecycle().addObserver(roomMainViewModel); } @Override - public void startActivity(ActivityEvent event) { - switch (event) { - case CREATE_ROOM: - startActivity(new Intent(RoomListActivity.this, RoomCreateActivity.class)); - break; - case ROOM_MAIN: - startActivity(new Intent(RoomListActivity.this, RoomMainActivity.class)); - break; - case INPUT_KEY: - startActivity(new Intent(RoomListActivity.this, RoomInputKeyActivity.class)); - break; - } + protected void onResume() { + super.onResume(); + addUiObserver(roomMainViewModel); } @Override - public void finishActivity() { - - } - - @Override - public void showShortToast(String message) { - Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); - } - - @Override - public void showLongToast(String message) { - Toast.makeText(this, message, Toast.LENGTH_LONG).show(); + protected void onPause() { + super.onPause(); + removeUiObserver(roomMainViewModel); } } diff --git a/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomListViewModel.java b/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomListViewModel.java index 6788372..9a75f5f 100644 --- a/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomListViewModel.java +++ b/app/src/main/java/com/example/sprout/refactor/viewmodel/RoomListViewModel.java @@ -6,9 +6,12 @@ import android.support.v7.widget.RecyclerView; import android.widget.LinearLayout; +import com.example.sprout.refactor.activity.RoomCreateActivity; +import com.example.sprout.refactor.activity.RoomInputKeyActivity; +import com.example.sprout.refactor.activity.RoomMainActivity; import com.example.sprout.refactor.adapter.RoomListAdapter; -import com.example.sprout.refactor.common.ActivityEvent; -import com.example.sprout.refactor.contract.ViewContract; +import com.example.sprout.refactor.messengers.NavigationMessage; +import com.example.sprout.refactor.messengers.ToastMessage; import com.example.sprout.refactor.model.ModelLocator; import com.example.sprout.refactor.model.entity.Room; import com.example.sprout.refactor.model.entity.RoomResponse; @@ -29,19 +32,17 @@ private RoomRepository roomRepository = null; private RoomListAdapter adapter = null; - private ViewContract viewContract = null; private RoomListAdapter.OnItemClickedListener listener = null; private Observer roomListObserver = null; private Observer enterRoomObserver = null; - public RoomListViewModel(RoomListAdapter adapter, ViewContract viewContract) { + public RoomListViewModel(RoomListAdapter adapter) { this.roomRepository = ModelLocator.getModel(ModelLocator.Tag.ROOM_REPOSITORY, RoomRepository.class); - this.viewContract = viewContract; this.listener = room -> { if (room.hasKey()) { PreferenceUtil.getInstance().saveInt(PreferenceUtil.Key.ROOM_ID, room.getRoomId()); - viewContract.startActivity(ActivityEvent.INPUT_KEY); + navigationObservable.notifyObservers(new NavigationMessage(NavigationMessage.Type.Start, RoomInputKeyActivity.class)); } else { roomRepository.enterRoom(room.getRoomId(), PreferenceUtil.getInstance().getInt(PreferenceUtil.Key.USER_ID)); } @@ -71,15 +72,15 @@ ModelLocator.setModel(ModelLocator.Tag.RoomResponse, roomResponse); PreferenceUtil.getInstance().saveInt(PreferenceUtil.Key.ROOM_ID, roomResponse.getRoom().getRoomId()); PreferenceUtil.getInstance().saveInt(PreferenceUtil.Key.MEMBER_ID, roomResponse.getMemberId()); - viewContract.startActivity(ActivityEvent.ROOM_MAIN); + navigationObservable.notifyObservers(new NavigationMessage(NavigationMessage.Type.Start, RoomMainActivity.class)); } else { - viewContract.showShortToast("入室に失敗しました"); + toastObservable.notifyObservers(new ToastMessage("入室に失敗しました", ToastMessage.Length.SHORT)); } } @Override public void error(Throwable throwable) { - viewContract.showShortToast("入室に失敗しました"); + toastObservable.notifyObservers(new ToastMessage("入室に失敗しました", ToastMessage.Length.SHORT)); } }; } @@ -104,7 +105,7 @@ } public void onClickCreateRoom() { - viewContract.startActivity(ActivityEvent.CREATE_ROOM); + navigationObservable.notifyObservers(new NavigationMessage(NavigationMessage.Type.Start, RoomCreateActivity.class)); } @BindingAdapter("setRoomListAdapter")