android - putextra - Cómo pasar lista<objeto> entre fragmento
putextra fragment android (2)
Creé mi diseño con viewPager y TabLayout:
public class HomeFragment extends Fragment
{
public static TabLayout tabLayout;
public static ViewPager viewPager;
public static int int_items = 3 ;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View inflatedView = inflater.inflate(R.layout.fragment_home, container,false);
viewPager = (ViewPager) inflatedView.findViewById(R.id.viewpager);
int [] drawables = {R.drawable.home,R.drawable.street,R.drawable.map};
Bundle bundle = new Bundle();
final SearchFragment searchFragment = new SearchFragment();
final CardFragment cardFragment = new CardFragment();
final MapFragment mapFragment = new MapFragment();
viewPager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager())
{
public Fragment getItem(int position)
{
if(position == 0)
return searchFragment;
else if(position ==1)
return cardFragment;
else
return mapFragment;
}
@Override
public int getCount()
{
return int_items;
}
});
tabLayout = (TabLayout) inflatedView.findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
for (int i = 0; i < tabLayout.getTabCount(); i++)
{
tabLayout.getTabAt(i).setIcon(drawables[i]);
}
return inflatedView;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
@Override
public void onDetach() {
super.onDetach();
}
}
ahora necesito hacer este código en Asynctask (publico solo el método doInBackground ()):
List <ParseObject> result;
ParseQuery<ParseObject> query;
protected Void doInBackground(final Void... params)
{
try
{
query = ParseQuery.getQuery("Trains");
result = query.find();
}
catch (com.parse.ParseException e)
{
e.printStackTrace();
}
}
así que ahora quiero pasar el resultado List <ParseObject> result;
en SearchFragment
, CardFragment
y MapFragment
.
Es posible usar un paquete? ¿O debo usar otro método?
Como la mayoría de los desarrolladores se confunden con los parámetros de rendimiento de Serialización y Parcelable, pongo la explicación a continuación
- Comparación de Parceleable y Serialización con resultados de rendimiento Comparación b / w Parcelable y Serialización
- Con el fin de simplificar la implementación parcelable, hay plugins disponibles para IDE. Consulte este enlace para obtener la respuesta de naXa.
- Plugin para Generador Parcelable Complemento de Estudio Android para Android Generación de código repetitivo y parcelable
Ahora viene cómo implementar la interfaz Parceleable
Crear clase de objeto que desea pasar implementar interfaz Parcelable
public class ContactPojo implements Parcelable{
private String name;
private String job_title;
public void setName(String name) {
this.name = name;
}
public void setJob_title(String job_title) {
this.job_title = job_title;
}
public String getName() {
return name;
}
public String getJob_title() {
return job_title;
}
private ContactPojo(Parcel parcel){
name=parcel.readString();
job_title=parcel.readString();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeString(name);
parcel.writeString(job_title);
}
public static final Parcelable.Creator<ContactPojo> CREATOR = new
Parcelable.Creator<ContactPojo>() {
public ContactPojo createFromParcel(Parcel in) {
return new ContactPojo(in);
}
public ContactPojo[] newArray(int size) {
return new ContactPojo[size];
}};
}
Ahora rellene la clase pojo haciendo lo siguiente
ContactPojo contactPojo= new ContactPojo();
contactPojo.setName("name");
contactPojo.setJob_title("name");
enviarlo a la próxima intención por este
Intent intent=new Intent(this, DetailView.class);
intent.putExtra("Data", contactPojo);
Recuperación de datos en el próximo intento por próximos pasos
ContactPojo contactPojo=new ContactPojo();
contactPojo=getIntent().getParcelableExtra("Data");
Log.i(AppConstants.APPUILOG, "Name: " + contactPojo.getName() );
Solo hazlo así también lo usé. Crea una clase de objeto cuya lista quieres pasar
public class PostDetails implements Serializable {
private String postUrl;
private String postType;
public String getPostUrl() {
return postUrl;
}
/**
*
* @param postUrl
* The post_url
*/
public void setPostUrl(String postUrl) {
this.postUrl = postUrl;
}
/**
*
* @return
* The postType
*/
public String getPostType() {
return postType;
}
/**
*
* @param postType
* The post_type
*/
public void setPostType(String postType) {
this.postType = postType;
}
}
Intento acaba de poner
List<PostDetails> postDetailses;
intent.putExtra("vdata", (Serializable) postDetailses);
Para recibir en el lado de la actividad
postDetailsList= (List<PostDetails>) getIntent().getSerializableExtra("vdata");