0

ich einen Führer benötigen, um Daten aus meiner Schaltfläche Hinzufügen meines Fragments hinzuzufügen undDaten hinzufügen Objekt von Fragmente zu Arraylist

in einer anderen fragment..Everything in Speicher, um die Liste anzuzeigen

Das ist meine Einheit

public class Incidencia implements Parcelable { 



    private Integer id_incidencia; 

    private String FechaRegistroIncidencia; 

    private String NomRegistro; 

    private String FechaRegistro;; 
    private String HoraRegistro; 
    private int CodEstacion; 
    private String NomEstacion; 
    private int CodEquipo; 
    private String NomEquipo; 
    private String TipoFalla; 
    private int AtoramientoMoneda; 
    private int AtoramientoBillete; 
    private String HoraLlegadaEstacion; 
    private String Estado; 
    private String Observaciones; 
    private String FechaSolucion; 
    private String HoraSolucion; 



    public Integer getId_incidencia() { 
     return id_incidencia; 
    } 

    public void setId_incidencia(Integer id_incidencia) { 
     this.id_incidencia = id_incidencia; 
    } 

    public String getFechaRegistroIncidencia() { 
     return FechaRegistroIncidencia; 
    } 

    public void setFechaRegistroIncidencia(String fechaRegistroIncidencia) { 
     FechaRegistroIncidencia = fechaRegistroIncidencia; 
    } 

    public String getNomRegistro() { 
     return NomRegistro; 
    } 

    public void setNomRegistro(String nomRegistro) { 
     NomRegistro = nomRegistro; 
    } 

    public String getFechaRegistro() { 
     return FechaRegistro; 
    } 

    public void setFechaRegistro(String fechaRegistro) { 
     FechaRegistro = fechaRegistro; 
    } 

    public String getHoraRegistro() { 
     return HoraRegistro; 
    } 

    public void setHoraRegistro(String horaRegistro) { 
     HoraRegistro = horaRegistro; 
    } 

    public Integer getCodEstacion() { 
     return CodEstacion; 
    } 

    public void setCodEstacion(Integer codEstacion) { 
     CodEstacion = codEstacion; 
    } 

    public String getNomEstacion() { 
     return NomEstacion; 
    } 

    public void setNomEstacion(String nomEstacion) { 
     NomEstacion = nomEstacion; 
    } 

    public Integer getCodEquipo() { 
     return CodEquipo; 
    } 

    public void setCodEquipo(Integer codEquipo) { 
     CodEquipo = codEquipo; 
    } 

    public String getNomEquipo() { 
     return NomEquipo; 
    } 

    public void setNomEquipo(String nomEquipo) { 
     NomEquipo = nomEquipo; 
    } 

    public String getTipoFalla() { 
     return TipoFalla; 
    } 

    public void setTipoFalla(String tipoFalla) { 
     TipoFalla = tipoFalla; 
    } 

    public Integer getAtoramientoMoneda() { 
     return AtoramientoMoneda; 
    } 

    public void setAtoramientoMoneda(Integer atoramientoMoneda) { 
     AtoramientoMoneda = atoramientoMoneda; 
    } 

    public Integer getAtoramientoBillete() { 
     return AtoramientoBillete; 
    } 

    public void setAtoramientoBillete(Integer atoramientoBillete) { 
     AtoramientoBillete = atoramientoBillete; 
    } 

    public String getHoraLlegadaEstacion() { 
     return HoraLlegadaEstacion; 
    } 

    public void setHoraLlegadaEstacion(String horaLlegadaEstacion) { 
     HoraLlegadaEstacion = horaLlegadaEstacion; 
    } 

    public String getEstado() { 
     return Estado; 
    } 

    public void setEstado(String estado) { 
     Estado = estado; 
    } 

    public String getObservaciones() { 
     return Observaciones; 
    } 

    public void setObservaciones(String observaciones) { 
     Observaciones = observaciones; 
    } 

    public String getFechaSolucion() { 
     return FechaSolucion; 
    } 

    public void setFechaSolucion(String fechaSolucion) { 
     FechaSolucion = fechaSolucion; 
    } 

    public String getHoraSolucion() { 
     return HoraSolucion; 
    } 

    public void setHoraSolucion(String horaSolucion) { 
     HoraSolucion = horaSolucion; 
    } 





    public Incidencia(){} 

    protected Incidencia(Parcel in){ 
     this.id_incidencia=in.readInt();; 
     this.FechaRegistroIncidencia=in.readString(); 
     this.NomRegistro=in.readString(); 
     this.FechaRegistro=in.readString(); 
     this.HoraRegistro=in.readString(); 
     this.CodEstacion=in.readInt(); 
     this.NomEstacion=in.readString(); 
     this.CodEquipo=in.readInt(); 
     this.NomEquipo=in.readString(); 
     this.TipoFalla=in.readString(); 
     this.AtoramientoMoneda=in.readInt(); 
     this.AtoramientoBillete=in.readInt(); 
     this.HoraLlegadaEstacion=in.readString(); 
     this.Estado=in.readString(); 
     this.Observaciones=in.readString(); 
     this.FechaSolucion=in.readString(); 
     this.HoraSolucion=in.readString(); 
    } 

    public static final Parcelable.Creator<Incidencia> CREATOR = new Parcelable.Creator<Incidencia>() { 
     @Override 
     public Incidencia createFromParcel(Parcel source) { 
      return new Incidencia(source); 
     } 

     @Override 
     public Incidencia[] newArray(int size) { 
      return new Incidencia[size]; 
     } 
    }; 



    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeString(this.FechaRegistro); 
     dest.writeString(this.HoraRegistro); 
     dest.writeString(this.TipoFalla); 
     dest.writeString(this.FechaSolucion); 
     dest.writeString(this.HoraSolucion); 
     dest.writeString(this.NomEstacion); 

    } 

} 

Das ist mein Adapter

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(); 

      } 

     } 

    public void setOnItemClickListener(OnItemClickListener listener){ 
     this.listener = listener; 
    } 

    public interface OnItemClickListener{ 
     public void onItemClick(String textName, String textViewBrief); 
    } 


    } 

ich ein incidencia Objekt von diesem Fragment hinzufügen möchten

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      /** 
      *Inflate ingresoincidenciastroncal and setup Views. 
      */ 
       final View x = inflater.inflate(R.layout.ingresoincidenciastroncal,null); 
      context = x.getContext(); 




      //BOTON DE AGREGAR INCIDENCIA 
      botonAgregaIncidencia=(Button) x.findViewById(R.id.btnAgregarIncidencia); 
      botonAgregaIncidencia.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        Incidencia incidencia = new Incidencia(); 
        incidencia.setFechaRegistro(mDateDisplay.getText().toString()); 
        incidencia.setHoraSolucion(mTimeDisplay.getText().toString()); 




        Toast toast = Toast.makeText(getContext(), "Registrado", Toast.LENGTH_SHORT); 
        toast.show(); 

       } 
      }); 
return x; 
} 

Und ich mag die Liste in diesem Fragmente

public class ListaIncidenciasTroncalFragment extends Fragment { 

    Context context; 


    GestureDetector detector; 


    private RecyclerView rvListaIncidencias; 
    private ListaIncidenciasTroncalAdapter mlistaIncidenciasTroncalAdapter; 

    public ListaIncidenciasTroncalFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     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); 
     rvListaIncidencias.setLayoutManager(new LinearLayoutManager(getContext())); 
     mlistaIncidenciasTroncalAdapter = new ListaIncidenciasTroncalAdapter(); 
     rvListaIncidencias.setAdapter(mlistaIncidenciasTroncalAdapter); 

    //I ADD THIS ONE FOR TEST AND ITS SUCCESFULL BUT I DONT KNOW HOW TO ADD IT BY THE BUTTON IN ANOTHER FRAGMENT 
    Incidencia incidencia = new Incidencia(); 
     incidencia.setFechaRegistro("06/06/2017"); 
     incidencia.setHoraRegistro("10:30"); 
     incidencia.setTipoFalla("Atasco Moneda"); 
     incidencia.setNomEstacion("Javier Prado"); 
     incidencia.setFechaSolucion("07/06/2017"); 
     incidencia.setHoraSolucion("9:20"); 
     mlistaIncidenciasTroncalAdapter.add(incidencia); 

return x; 
} 
+0

https://www.sitepoint.com/transfer-data-between-activities-with-android-parcelable/ –

+0

Sind beide Fragmente an dieselbe Aktivität gebunden? Wenn dies der Fall ist, müssen Sie die Parcelable-Schnittstelle nicht implementieren (es sei denn, Sie verschieben Objekte zwischen Aktivitäten/Prozessen). Verwenden Sie stattdessen Schnittstellen über die Hosting-Aktivität. Verwenden Sie besser noch rxjava, um einen Verweis auf das Observable Fragment to Fragment zu erhalten und abonnieren Sie es in Ihrem Fragment. –

+0

Ja beide sind in der gleichen Aktivität, ich werde Daten zwischen Aktivitäten verschieben. Wie kann ich ein Incidencia von meinem onClicklistener Knopf hinzufügen und die Liste in einem anderen Fragment zeigen – Pierre

Antwort

0

In Ihrem ersten Fragmente sehen, definiert eine Schnittstelle, die Ihr incidencia Objekt an die Host-Aktivität passieren würden. Die Interface-Methode wird in der Schaltfläche onClick() genannt:

public class YourFirstFragment extends Fragment { 
    private OnButtonClickedListener mListener; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     ... 
     botonAgregaIncidencia.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ... 
       mListener.onButtonClicked(incidencia); 
      } 
     }); 
    } 

    public interface OnButtonClickedListener { 
     void onButtonClicked(Incidencia incidencia); 
    } 
} 

Dann in Ihrer Tätigkeit, diese Schnittstelle implementieren. Die überschriebene Methode bündelt auch das Objekt und übergeben Sie zu Ihrem nächsten Fragmente als Fragment Argument:

public class YourActivity implements YourFirstFragment.OnButtonClicked { 
    . 
    . 
    . 
    @Override 
    public void onButtonClicked(Incidencia incidencia){ 
     ListaIncidenciasTroncalFragment fragment = new ListaIncidenciasTroncalFragment(); 
     Bundle args = new Bundle(); 
     args.putParcelable("yourKey", incindencia); 
     fragement.setArguments(args); 
     getSupportFragmentManager().beginTransaction().replace(R.id.yourFragmentContainer, fragment).commit(); 
    } 
} 

schließlich in Ihrem zweiten Fragmente, extrahiert das Bündel oder Argumente wie so und verwenden Sie es, wie Sie wollen:

Bundle args = getArguments(); 
Incidencia incidencia = args.getParcelable("yourKey"); 
+0

Ich tat es, aber es gibt einen Fehler in onCreateView, die App fällt, wenn ich zu ListaIncidenciasTroncalFragment gehe. Im Fall von "yourfragmentContainer" muss es die ID des Principal LinearLayouts sein oder muss die Recyclerview ID sein, sowohl innerhalb der Layoutliste als auch in der Layoutliste als Incidencidencias oder als Layoutincidenciasitem ?? – Pierre

+0

Es muss die ID der Ansicht (normalerweise ein 'FrameLayout') in Ihrem übergeordneten Layout der Aktivität sein, in der Sie Ihr Fragment setzen. – kRiZ

Verwandte Themen