Как отправить ArrayList типа объекта класса из одной активности в другую?

Я хочу отправить ArrayList типа объекта класса из одной активности в другую, но, она дает мне ошибку, пожалуйста, помогите мне. Я пробовал много ссылок, но проблема не решена. FATAL EXCEPTION MAIN: Java.Lang.RuntimeException Я пробовал эти ссылки: Передача ArrayList с объектами в новую активность? Как передать ArrayList объектов из одного в другое с использованием Intent в android?

//Sending Side Code:


 if(result.size()>0)
 {

 ArrayList< LogSetGet> lst=new ArrayList<logsetget>();
 lst=result;
 Intent i=new Intent(LogIn.this,Home.class);
 i.putExtra("list",result);
 startActivity(i);
 }

//Receiving side Code:
 Intent i=this.getIntent();
 ArrayList<logsetget>ls=ArrayList<logsetget>)i.getSerializableExtra("list");
 ArrayAdapter<logsetget> adptr=new ArrayAdapter<logsetget>(Home.this,android.R.layout.simple_list_item_1,ls);
 lv.setAdapter(adptr);
</logsetget></logsetget></logsetget></logsetget></logsetget>

Заранее спасибо.

4 ответа

вы пишете это

class LogSetGet implements Serializable{

}

а также

if(result.size()>0){
 ArrayList< LogSetGet> lst=new ArrayList<logsetget>();
 lst=result;
 Intent i=new Intent(LogIn.this,Home.class);
 i.putExtra("list",result);
 startActivity(i);
 }
</logsetget>

надеюсь, вы получите это


Просто объявите свой ArrayList, как это выше onCreate()

static ArrayList< LogSetGet> lst=new ArrayList<logsetget>();
</logsetget>

Когда вы объявляете переменную или метод, вы можете позвонить туда, где захотите, в своем приложении с именем Activity.

Например

ArrayList< LogSetGet> lst1 = new ArrayList<logsetget>();
lst1 = youractivityname.lst; 
</logsetget>

Имя вашей деятельности - это не что иное, как объявление статического массива ArrayList lst = new ArrayList();


Если ваши объекты в ArrayList большие или если вы будете использовать их во многих разностных действиях, я рекомендую использовать шаблон Singleton. Пример простого Singleton:

public class TestSingleton {

private static TestSingleton testSingleton;
private ArrayList<string> testArray;

TestSingleton() {
 testArray = new ArrayList<string>();
}

public static TestSingleton getInstance() {
 if (testSingleton == null)
 testSingleton = new TestSingleton();
 return testSingleton;
}}
</string></string>

Затем вы сможете получить экземпляр TestSingleton с getInstance() в любом месте вашего приложения. В памяти будет только один объект, и вы сможете работать с ним, не вращаясь, как перемещать его между действиями. Просто вызовите TestSingleton.getInstance() в любом месте, которое вы хотите.


зависит от типа:

putIntegerArrayListExtra(String name, ArrayList<integer> value)

putParcelableArrayListExtra(String name, ArrayList<!--? extends Parcelable--> value)

putStringArrayListExtra(String name, ArrayList<string> value)

putCharSequenceArrayListExtra(String name, ArrayList<charsequence> value)
</charsequence></string></integer>

Затем вы можете читать из следующего действия, чтобы получить с ключевой строкой в качестве аргумента:

********.getStringArrayListExtra("arrayPeople");

licensed under cc by-sa 3.0 with attribution.