Android 从片段向Arraylist对象添加数据
我需要一个指南,从片段的add按钮添加数据,并在另一个片段中显示列表。内存中的所有内容 这是我的实体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
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");