Android 从片段向Arraylist对象添加数据

Android 从片段向Arraylist对象添加数据,android,android-studio,object,android-fragments,android-recyclerview,Android,Android Studio,Object,Android Fragments,Android Recyclerview,我需要一个指南,从片段的add按钮添加数据,并在另一个片段中显示列表。内存中的所有内容 这是我的实体 public class Incidencia implements Parcelable { private Integer id_incidencia; private String FechaRegistroIncidencia; private String NomRegistro; private String FechaRegistro

我需要一个指南,从片段的add按钮添加数据,并在另一个片段中显示列表。内存中的所有内容

这是我的实体

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

    }

}
我想看看这个片段中的列表

    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;
}
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;
}

在第一个片段中,定义一个将Incidencia对象传递给宿主活动的接口。在按钮的
onClick()
中调用接口方法:

然后,在活动中实现此接口。重写的方法还将绑定对象并作为片段参数传递给下一个片段:

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();
    }
}
最后,在第二个片段中,提取bundle或类似的参数,并根据需要使用它:

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

两个片段是否都连接到同一个活动?如果是这样,您不需要实现Parcelable接口(除非您在活动/流程之间移动对象)。而是通过托管活动使用接口。最好还是使用rxjava获取对可观察片段的引用,并在片段中订阅它。是的,两者都在同一个活动中,我将在活动之间移动数据。如何从onClicklistener按钮添加Incidencia并在另一个片段中显示列表我这样做了,但onCreateView中有一个错误,当我转到ListaIncidenciasTroncalFragment时,应用程序会失败。在“yourfragmentContainer”的情况下,它必须是主要的LinearLayout的id或recyclerview id,无论是在layoutlistasincidencias还是LayoutCidenciItem中,它都必须是设置片段的活动的父布局中的视图id(通常是
框架布局
)。
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();
    }
}
Bundle args = getArguments();
Incidencia incidencia = args.getParcelable("yourKey");