Skip to content

Instantly share code, notes, and snippets.

@VAdaihiep
Created November 6, 2015 03:19
Show Gist options
  • Save VAdaihiep/258caf962c087cc01d5d to your computer and use it in GitHub Desktop.
Save VAdaihiep/258caf962c087cc01d5d to your computer and use it in GitHub Desktop.
Keep state (data) in Fragment when replace fragment and go back
package vn.vadaihiep.keepstatefragment;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* Created by AnhNV@mwork.vn on 11/5/2015.
*/
public class MyListFragment extends Fragment {
private View mainView;
private RecyclerView mRecyclerView;
private MyAdapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
/**
* When go back, this function will not be called
**/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAdapter = new MyAdapter();
}
@Override
public void onStart() {
super.onStart();
// Load data if data is empty
if (mAdapter.getItemCount() == 0) {
loadAndAddItem();
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mainView = inflater.inflate(R.layout.fragment_my_list, container, false);
mRecyclerView = (RecyclerView) mainView.findViewById(R.id.my_recycler_view);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getContext());
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
mainView.findViewById(R.id.btnAdd).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadAndAddItem();
}
});
return mainView;
}
private ProgressDialog progressDialog;
/**
* Gia vo load data = handler.postDelayed
*/
private void loadAndAddItem() {
if (progressDialog == null) {
progressDialog = new ProgressDialog(getContext());
progressDialog.setMessage("Loading...");
}
progressDialog.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
int size = mAdapter.getItemCount();
for (int i = size; i < size + 15; i++) {
mAdapter.add("Item number " + i);
}
mAdapter.notifyDataSetChanged();
progressDialog.dismiss();
}
}, 2000);
}
@Override
public void onDestroyView() {
Log.d("VAdaihiep", "onDestroyView");
super.onDestroyView();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment