Вопрос:

Как передать ArrayList <CustomeObject> из одного действия в другое?

android android-intent bundle serializable

107985 просмотра

4 ответа

1786 Репутация автора

Я хочу отправить Follow ArrayList из одного мероприятия в другое, пожалуйста, помогите.

ContactBean m_objUserDetails = new ContactBean();
ArrayList<ContactBean> ContactLis = new ArrayList<ContactBean>(); 

Я отправляю вышеуказанный arraylist после добавления данных в нем следующим образом

  Intent i = new Intent(this,DisplayContact.class);
  i.putExtra("Contact_list", ContactLis);
  startActivity(i);

Но у меня проблемы при восстановлении.

ArrayList<ContactBean> l1 = new ArrayList<ContactBean>();
Bundle wrapedReceivedList = getIntent().getExtras();
l1= wrapedReceivedList.getCharSequenceArrayList("Contact_list");

В этот момент я получаю эту ошибку:

Type mismatch: cannot convert from ArrayList<CharSequence> to ArrayList<ContactBean>

Мой класс ContactBean реализует Serializable, пожалуйста, также расскажите, почему мы должны реализовать сериализуемый интерфейс.

Автор: DCoder Источник Размещён: 21.01.2014 06:02

Ответы (4)


84 плюса

2194 Репутация автора

Решение

Вы можете передать ArrayList<E>тот же путь, если Eтип Serializable.

Вы бы позвонили putExtra (String name, Serializable value)из Intentмагазина и getSerializableExtra (String name)для поиска.

Пример:

ArrayList<String> myList = new ArrayList<String>();
intent.putExtra("mylist", myList);

В другой деятельности:

ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist");
Автор: Ravind Maurya Размещён: 21.01.2014 06:06

14 плюса

10994 Репутация автора

вам нужны реализации Parcelable в вашем ContactBeanклассе, я приведу один пример для вас:

public class ContactClass implements Parcelable {

private String id;
private String photo;
private String firstname;
private String lastname;

public ContactClass()
{

}

private ContactClass(Parcel in) {
    firstname = in.readString();
    lastname = in.readString();
    photo = in.readString();
    id = in.readString();

}

@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {

    dest.writeString(firstname);
    dest.writeString(lastname);
    dest.writeString(photo);
    dest.writeString(id);

}

 public static final Parcelable.Creator<ContactClass> CREATOR = new Parcelable.Creator<ContactClass>() {
        public ContactClass createFromParcel(Parcel in) {
            return new ContactClass(in);
        }

        public ContactClass[] newArray(int size) {
            return new ContactClass[size];

        }
    };

   // all get , set method 
 }

и это получить и установить для вашего кода:

Intent intent = new Intent(this,DisplayContact.class);
intent.putExtra("Contact_list", ContactLis);
startActivity(intent);

Второй класс:

ArrayList<ContactClass> myList = getIntent().getParcelableExtra("Contact_list");
Автор: Shayan Pourvatan Размещён: 21.01.2014 06:08

27 плюса

301 Репутация автора

В первом упражнении:

ArrayList<ContactBean> fileList = new ArrayList<ContactBean>();
Intent intent = new Intent(MainActivity.this, secondActivity.class);
intent.putExtra("FILES_TO_SEND", fileList);
startActivity(intent);

В деятельности получателя:

ArrayList<ContactBean> filelist =  (ArrayList<ContactBean>)getIntent().getSerializableExtra("FILES_TO_SEND");`
Автор: chinnuu Размещён: 21.01.2014 06:10

3 плюса

1317 Репутация автора

Используйте этот код, чтобы перейти arraylist<customobj>к другим действиям

сначала сериализуйте наш контактный компонент

public class ContactBean implements Serializable {
      //do intialization here
}

Теперь передайте свой arraylist

 Intent intent = new Intent(this,name of activity.class);
 contactBean=(ConactBean)_arraylist.get(position);
 intent.putExtra("contactBeanObj",conactBean);
 _activity.startActivity(intent);
Автор: Anjali Tripathi Размещён: 21.01.2014 06:38
Вопросы из категории :
32x32