2013-03-10 6 views
1

Есть ли способ передать ArrayList <ArrayList<Integer>> floors другим действиям через Bundle?Bundle ArrayList <ArrayList <Integer>>

Благодаря

+0

Извините, я прочитал вопрос неправильно. работает над обновлением. – Sajmon

+0

http://stackoverflow.com/questions/5374546/passing-arraylist-through-intent – Raghunandan

ответ

6

Is there a way to pass an ArrayList > floors to another activity through Bundle?

Unfortunetly нет.

Если у вас есть ArrayList без вложенности, он будет работать с putIntegerArrayList(key, value) и getIntegerArrayList(key).

Но есть, конечно, еще один подход. Я объясню вам один из возможных способов.

Вы можете создать класс, который будет реализовывать интерфейс Serializable, и в этом классе просто создать поле и соответствующий getter. Я приведу вам базовый пример. Затем вы пройдете Serializable через действия.

public class DataHelper implements Serializable { 

    private ArrayList<ArrayList<Integer>> floors; 

    public DataHelper(ArrayList<ArrayList<Integer>> floors) { 
     this.floors = floors; 
    } 

    public ArrayList<ArrayList<Integer>> getList() { 
     return this.floors; 
    } 
} 

Сохранить это Bundle:

Bundle b = new Bundle(); 
b.putSerializable("floors", new DataHelper(floors)); 

и получить в целевой деятельности:

getIntent().getExtras().getSerializable("floors"); 
+0

Это дает следующее сообщение об ошибке: Метод putIntegerArrayList (String, ArrayList ) в типе Bundle не применяется для аргументов (String , ArrayList >) ArrayList > а не ArrayList Ang3lo

+0

ответ обновлен. – Sajmon

+0

@sajmon_d: но я думаю, что можно отправить вложенный ArrayList –

1

Чтобы передать ArrayList от первой активности на второй активности.

Intent intent = new Intent(context, SecondActity.class); 
intent.putIntegerArrayListExtra("arraylist",integerList); //integerList is ArrayList<Integer> 
startActivity(intent); 

Чтобы получить массивList во второй операции.

ArrayList arrayList<Integer> = getIntent().getIntegerArrayListExtra("arraylist") 

Прочитано here.

Если вы хотите передать пользовательский объект между видами деятельности, прочитайте это thread.

+2

это не будет работать. он имеет ArrayList с вложенной ArrayList: - – Sajmon

+0

Привет, спасибо, но это дает следующее сообщение об ошибке: Метод putIntegerArrayListExtra (String, ArrayList ) в типе Intent не применимый для аргументов (String, ArrayList >) Это массив внутри другого массива – Ang3lo

+0

@sajmon_d Я обновил ответ и дал ссылку, как мы можем передавать пользовательский объект между действиями. –

Смежные вопросы