mirror of
https://github.com/android10/Android-CleanArchitecture.git
synced 2026-03-13 10:13:41 +08:00
Retain fragments and refactor. Add user list fragment programatically.
This commit is contained in:
@@ -52,7 +52,8 @@ public abstract class UseCase {
|
||||
/**
|
||||
* Executes the current use case.
|
||||
*
|
||||
* @param UseCaseSubscriber The guy who will be listen to the observable build with {@link #buildUseCaseObservable()}.
|
||||
* @param UseCaseSubscriber The guy who will be listen to the observable build
|
||||
* with {@link #buildUseCaseObservable()}.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public void execute(Subscriber UseCaseSubscriber) {
|
||||
|
||||
@@ -55,7 +55,7 @@ public class UserDetailsActivity extends BaseActivity implements HasComponent<Us
|
||||
private void initializeActivity(Bundle savedInstanceState) {
|
||||
if (savedInstanceState == null) {
|
||||
this.userId = getIntent().getIntExtra(INTENT_EXTRA_PARAM_USER_ID, -1);
|
||||
addFragment(R.id.fl_fragment, UserDetailsFragment.newInstance(this.userId));
|
||||
addFragment(R.id.fl_fragment, UserDetailsFragment.create(this.userId));
|
||||
} else {
|
||||
this.userId = savedInstanceState.getInt(INSTANCE_STATE_PARAM_USER_ID);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/**
|
||||
* Copyright (C) 2014 android10.org. All rights reserved.
|
||||
*
|
||||
* @author Fernando Cejas (the android10 coder)
|
||||
*/
|
||||
package com.fernandocejas.android10.sample.presentation.view.activity;
|
||||
@@ -33,6 +34,10 @@ public class UserListActivity extends BaseActivity implements HasComponent<UserC
|
||||
setContentView(R.layout.activity_user_list);
|
||||
|
||||
this.initializeInjector();
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
addFragment(R.id.fragmentContainer, new UserListFragment());
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeInjector() {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
/**
|
||||
* Copyright (C) 2014 android10.org. All rights reserved.
|
||||
*
|
||||
* @author Fernando Cejas (the android10 coder)
|
||||
*/
|
||||
package com.fernandocejas.android10.sample.presentation.view.fragment;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Toast;
|
||||
import com.fernandocejas.android10.sample.presentation.internal.di.HasComponent;
|
||||
|
||||
@@ -13,12 +13,6 @@ import com.fernandocejas.android10.sample.presentation.internal.di.HasComponent;
|
||||
* Base {@link android.app.Fragment} class for every fragment in this application.
|
||||
*/
|
||||
public abstract class BaseFragment extends Fragment {
|
||||
|
||||
@Override public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setRetainInstance(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows a {@link android.widget.Toast} message.
|
||||
*
|
||||
@@ -33,6 +27,6 @@ public abstract class BaseFragment extends Fragment {
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
protected <C> C getComponent(Class<C> componentType) {
|
||||
return componentType.cast(((HasComponent<C>)getActivity()).getComponent());
|
||||
return componentType.cast(((HasComponent<C>) getActivity()).getComponent());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,30 +43,35 @@ public class UserDetailsFragment extends BaseFragment implements UserDetailsView
|
||||
@Bind(R.id.rl_retry) RelativeLayout rl_retry;
|
||||
@Bind(R.id.bt_retry) Button bt_retry;
|
||||
|
||||
public UserDetailsFragment() { super(); }
|
||||
public UserDetailsFragment() {
|
||||
setRetainInstance(true);
|
||||
}
|
||||
|
||||
public static UserDetailsFragment newInstance(int userId) {
|
||||
public static UserDetailsFragment create(int userId) {
|
||||
UserDetailsFragment userDetailsFragment = new UserDetailsFragment();
|
||||
|
||||
Bundle argumentsBundle = new Bundle();
|
||||
argumentsBundle.putInt(ARGUMENT_KEY_USER_ID, userId);
|
||||
userDetailsFragment.setArguments(argumentsBundle);
|
||||
|
||||
return userDetailsFragment;
|
||||
}
|
||||
|
||||
@Override public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
this.getComponent(UserComponent.class).inject(this);
|
||||
}
|
||||
|
||||
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
|
||||
View fragmentView = inflater.inflate(R.layout.fragment_user_details, container, false);
|
||||
final View fragmentView = inflater.inflate(R.layout.fragment_user_details, container, false);
|
||||
ButterKnife.bind(this, fragmentView);
|
||||
|
||||
return fragmentView;
|
||||
}
|
||||
|
||||
@Override public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
this.initialize();
|
||||
@Override public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
this.userDetailsPresenter.setView(this);
|
||||
this.userId = getArguments().getInt(ARGUMENT_KEY_USER_ID);
|
||||
this.userDetailsPresenter.initialize(this.userId);
|
||||
}
|
||||
|
||||
@Override public void onResume() {
|
||||
@@ -89,13 +94,6 @@ public class UserDetailsFragment extends BaseFragment implements UserDetailsView
|
||||
this.userDetailsPresenter.destroy();
|
||||
}
|
||||
|
||||
private void initialize() {
|
||||
this.getComponent(UserComponent.class).inject(this);
|
||||
this.userDetailsPresenter.setView(this);
|
||||
this.userId = getArguments().getInt(ARGUMENT_KEY_USER_ID);
|
||||
this.userDetailsPresenter.initialize(this.userId);
|
||||
}
|
||||
|
||||
@Override public void renderUser(UserModel user) {
|
||||
if (user != null) {
|
||||
this.iv_cover.setImageUrl(user.getCoverUrl());
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/**
|
||||
* Copyright (C) 2014 android10.org. All rights reserved.
|
||||
*
|
||||
* @author Fernando Cejas (the android10 coder)
|
||||
*/
|
||||
package com.fernandocejas.android10.sample.presentation.view.fragment;
|
||||
@@ -51,7 +52,9 @@ public class UserListFragment extends BaseFragment implements UserListView {
|
||||
|
||||
private UserListListener userListListener;
|
||||
|
||||
public UserListFragment() { super(); }
|
||||
public UserListFragment() {
|
||||
setRetainInstance(true);
|
||||
}
|
||||
|
||||
@Override public void onAttach(Activity activity) {
|
||||
super.onAttach(activity);
|
||||
@@ -60,19 +63,22 @@ public class UserListFragment extends BaseFragment implements UserListView {
|
||||
}
|
||||
}
|
||||
|
||||
@Override public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
this.getComponent(UserComponent.class).inject(this);
|
||||
}
|
||||
|
||||
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
|
||||
View fragmentView = inflater.inflate(R.layout.fragment_user_list, container, true);
|
||||
final View fragmentView = inflater.inflate(R.layout.fragment_user_list, container, false);
|
||||
ButterKnife.bind(this, fragmentView);
|
||||
setupUI();
|
||||
|
||||
return fragmentView;
|
||||
}
|
||||
|
||||
@Override public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
this.initialize();
|
||||
@Override public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
this.userListPresenter.setView(this);
|
||||
this.loadUserList();
|
||||
}
|
||||
|
||||
@@ -96,11 +102,6 @@ public class UserListFragment extends BaseFragment implements UserListView {
|
||||
ButterKnife.unbind(this);
|
||||
}
|
||||
|
||||
private void initialize() {
|
||||
this.getComponent(UserComponent.class).inject(this);
|
||||
this.userListPresenter.setView(this);
|
||||
}
|
||||
|
||||
private void setupUI() {
|
||||
this.usersLayoutManager = new UsersLayoutManager(getActivity());
|
||||
this.rv_users.setLayoutManager(usersLayoutManager);
|
||||
@@ -130,7 +131,7 @@ public class UserListFragment extends BaseFragment implements UserListView {
|
||||
|
||||
@Override public void renderUserList(Collection<UserModel> userModelCollection) {
|
||||
if (userModelCollection != null) {
|
||||
this.usersAdapter.setUsersCollection(userModelCollection);
|
||||
this.usersAdapter.setUsersCollection(userModelCollection);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,9 +163,9 @@ public class UserListFragment extends BaseFragment implements UserListView {
|
||||
private UsersAdapter.OnItemClickListener onItemClickListener =
|
||||
new UsersAdapter.OnItemClickListener() {
|
||||
@Override public void onUserItemClicked(UserModel userModel) {
|
||||
if (UserListFragment.this.userListPresenter != null && userModel != null) {
|
||||
UserListFragment.this.userListPresenter.onUserClicked(userModel);
|
||||
}
|
||||
if (UserListFragment.this.userListPresenter != null && userModel != null) {
|
||||
UserListFragment.this.userListPresenter.onUserClicked(userModel);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
android:layout_height="match_parent"
|
||||
>
|
||||
|
||||
<fragment
|
||||
android:name="com.fernandocejas.android10.sample.presentation.view.fragment.UserListFragment"
|
||||
android:id="@+id/fragmentUserList"
|
||||
<FrameLayout
|
||||
android:id="@+id/fragmentContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
/>
|
||||
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
@@ -1,19 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
>
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<include
|
||||
layout="@layout/view_user_details"
|
||||
/>
|
||||
<include layout="@layout/view_user_details" />
|
||||
|
||||
<include
|
||||
layout="@layout/view_progress"
|
||||
/>
|
||||
<include layout="@layout/view_progress" />
|
||||
|
||||
<include
|
||||
layout="@layout/view_retry"
|
||||
/>
|
||||
<include layout="@layout/view_retry" />
|
||||
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
Reference in New Issue
Block a user