Android - Cómo guardar la instancia de un fragmento que contiene un recyclerview

   
Vista:

Cómo guardar la instancia de un fragmento que contiene un recyclerview

Publicado por Pierre pierrecrow@gmail.com (1 intervención) el 14/06/2017 15:57:58
Fragment que lista los items

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
public class ListaIncidenciasTroncalFragment extends Fragment {
 
    Context context;
    Incidencia incidencia = new Incidencia();
 
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        if (savedInstanceState==null){}
        else {}
    }
 
    private RecyclerView rvListaIncidencias;
    private ListaIncidenciasTroncalAdapter mlistaIncidenciasTroncalAdapter;
 
    public ListaIncidenciasTroncalFragment() {
        // Required empty public constructor
    }
 
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }
 
    @Override
    public void onPause() {
        super.onPause();
    }
 
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
    }
 
    @Override
    public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
        super.onViewStateRestored(savedInstanceState);
    }
 
    //METODO PARA CAPTURAR EL BOTON BACK EN UN FRAGMENTO
    @Override
    public void onResume() {
        super.onResume();
 
        if(getView() == null){
            return;
        }
 
        getView().setFocusableInTouchMode(true);
        getView().requestFocus();
        getView().setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
 
                if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){
 
                    return true;
                }
                return false;
            }
        });
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
 
        setRetainInstance(true);
        final View x =  inflater.inflate(R.layout.listaincidenciastroncalfragment,null);
        context = x.getContext();
 
 
        detector = new GestureDetector(getActivity(), new RecyclerViewOnGestureListener());
 
        rvListaIncidencias=(RecyclerView)x.findViewById(R.id.rv_listaIncidenciasTroncal);
       // mLayoutManager = new LinearLayoutManager(getActivity());
        rvListaIncidencias.setLayoutManager(new LinearLayoutManager(getContext()));
        //rvListaIncidencias.setLayoutManager(mLayoutManager);
        mlistaIncidenciasTroncalAdapter = new ListaIncidenciasTroncalAdapter();
        rvListaIncidencias.setAdapter(mlistaIncidenciasTroncalAdapter);
        mlistaIncidenciasTroncalAdapter.notifyDataSetChanged();
 
 
        Bundle args = getArguments();
            if (args != null) {
 
                incidencia = args.getParcelable("newIncident");
                mlistaIncidenciasTroncalAdapter.add(incidencia);
 
            } else {
 
            }
 
        return x;
    }
}



Este codigo esta adentro de onCreateView en el fragmento que agrega item


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
addbutton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
 
 ListaIncidenciasTroncalFragment fragmentGet = new ListaIncidenciasTroncalFragment();
        Bundle bundle = new Bundle();
        bundle.putParcelable("NewIncidencia", incidencia);
        fragmentGet.setArguments(bundle);
 
        //Next lines is necessary to pass the bundle to the fragment but 
        //this means go to the listfragment after addclick (I DONT WANT IT).
        //I want it to show another fragment after add click
        FragmentManager manager= getFragmentManager();
        manager.beginTransaction().replace(R.id.containerView,fragmentGet).commit();
 
    }


Adapter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
public class ListaIncidenciasTroncalAdapter extends RecyclerView.Adapter<ListaIncidenciasTroncalAdapter.ListaIncidenciasTroncalAdapterViewHolder>
         {
 
    private List<Incidencia> mLstIncidencia = new ArrayList<>();
    //private OnItemClickListener listener;
 
 
    public void add(Incidencia incidencia){
 
        mLstIncidencia.add(incidencia);
        notifyItemInserted(mLstIncidencia.size()-1);
 
    }
 
 
 
    @Override
    public ListaIncidenciasTroncalAdapter.ListaIncidenciasTroncalAdapterViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.listaincidencias_item,parent,false);
        ListaIncidenciasTroncalAdapterViewHolder  mlistaIncidenciasTroncalAdapterViewHolder = new ListaIncidenciasTroncalAdapterViewHolder(view);
        return mlistaIncidenciasTroncalAdapterViewHolder;
    }
 
    @Override
    public void onBindViewHolder(ListaIncidenciasTroncalAdapter.ListaIncidenciasTroncalAdapterViewHolder holder, final int position) {
 
        final Incidencia incidencia= mLstIncidencia.get(position);
        holder.tv_FechaRegistro.setText("Registro: "+ incidencia.getFechaRegistro()+" - "+incidencia.getHoraRegistro());
        holder.tv_Falla.setText(incidencia.getTipoFalla());
        holder.tv_Estacion.setText(incidencia.getNomEstacion());
        holder.tv_FechaSolucion.setText("Solucion: "+incidencia.getFechaSolucion()+" - "+incidencia.getHoraSolucion());
 
 
    }
 
    @Override
    public int getItemCount() {
        return mLstIncidencia.size();
    }
 
 
    static class ListaIncidenciasTroncalAdapterViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
 
        //private OnItemClickListener listener;
        TextView tv_FechaRegistro, tv_Falla, tv_Estacion,tv_FechaSolucion;
        LinearLayout linearLayout;
        public DetalleIncidencia detalleincidencia;
 
        public ListaIncidenciasTroncalAdapterViewHolder(View itemView) {
            super(itemView);
            tv_FechaRegistro= (TextView) itemView.findViewById(R.id.tvRegistro);
            tv_Falla= (TextView) itemView.findViewById(R.id.tvFalla);
            tv_Estacion= (TextView) itemView.findViewById(R.id.tvEstacion);
            tv_FechaSolucion= (TextView) itemView.findViewById(R.id.tvSolucion);
 
            final Context context = itemView.getContext();
            //detalleincidencia=(DetalleIncidencia) itemView.findViewById(R.id.)
 
            linearLayout=(LinearLayout) itemView.findViewById(R.id.linearItem);
 
        }
 
        @Override
        public void onClick(View v) {
            int pos = getAdapterPosition();
 
            }
 
        }}



Main activity que contiene los fragmentos


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
public class MainActivity extends ActionBarActivity implements IngresoIncidenciaTroncalFragment.OnButtonClickedListener{
 
 
    DrawerLayout mDrawerLayout;
    NavigationView mNavigationView;
    FragmentManager mFragmentManager;
    FragmentTransaction mFragmentTransaction;
 
    TextView tvNombre, tvEmail;
    Bundle mContent;
 
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
 
    }
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        if (savedInstanceState != null) {
 
        }
 
        //SETEO EL DRAWERLAYOUT Y EL NAVIGATIONVIEW
        final Toolbar mitoolbar = (Toolbar) findViewById(R.id.toolbar);
             mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
             mNavigationView = (NavigationView) findViewById(R.id.shitstuff) ;
        setSupportActionBar(mitoolbar);
 
        tvNombre=(TextView) findViewById(R.id.txtNombreUsuario);
 
            //ACA INFLO EL PRIMER FRAGMENTO QUE SERA EL FONDO DEL NAVIGATION DRAWER CUANDO SE ABRA LA APP
             mFragmentManager = getSupportFragmentManager();
             mFragmentTransaction = mFragmentManager.beginTransaction();
             mFragmentTransaction.replace(R.id.containerView,new FondoInicioFragment()).commit();
 
 
            //EVENTO CLICK DE CADA ITEM DEL NAVIGATION VIEW
             mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
             @Override
             public boolean onNavigationItemSelected(MenuItem menuItem) {
                mDrawerLayout.closeDrawers();
 
                 if (menuItem.getItemId() == R.id.nav_item_ingresoIncidencia) {
                     FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
                     fragmentTransaction.replace(R.id.containerView,new IngresoIncidenciaTroncalFragment()).commit();
                     mitoolbar.setTitle("Ingreso Incidencia Troncal");
                 }
 
                else if (menuItem.getItemId() == R.id.nav_item_listarIncidencia) {
                     FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
                     fragmentTransaction.replace(R.id.containerView,new ListaIncidenciasTroncalFragment()).commit();
                     mitoolbar.setTitle("Lista Incidencias Troncal");
 
                 }
 
                 return false;
            }
 
        });
 
 
                 //SETUP DRAWER TOGGLE OF THE TOOLBAR
                android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar);
                ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout, toolbar,R.string.app_name,
                R.string.app_name);
                mDrawerLayout.setDrawerListener(mDrawerToggle);
                mDrawerToggle.syncState();
 
    }
 
 
 
    //METODO IMPLEMENTADO DE INGRESOINCIDENCIATRONCALFRAGMENT PARA PONERLE UN KEY A LA INCIDENCIA AGREGADA Y ASI
    // SE LA PUEDA MANDAR A LA LISTA DE INCIDENCIAS
 
    public void onButtonClicked(Incidencia incidencia){
 
        ListaIncidenciasTroncalFragment fragment = new ListaIncidenciasTroncalFragment();
        Bundle args = new Bundle();
        args.putParcelable("newIncident", incidencia);
        fragment.setArguments(args);
        getSupportFragmentManager().beginTransaction().replace(R.id.containerView, fragment).commit();
 
    }
 
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        int id = item.getItemId();
 
        return super.onOptionsItemSelected(item);
    }
 
 
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Revisar política de publicidad