如何将类对象类型的ArrayList从一个活动发送到另一个活动?

时间:2014-04-22 07:33:15

标签: android

我想将类对象类型的ArrayList从一个活动发送到另一个活动     但是,它给了我一个错误,请帮助我。我试过很多链接,但是,我的问题     没解决。      致命的例外主要:     了java.lang.RuntimeException     我试过这些链接:       Passing ArrayList with objects to new Activity?       How to pass ArrayList of Objects from one to another activity using Intent in 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);

提前谢谢。

4 个答案:

答案 0 :(得分:0)

只需在onCreate()

上声明您的ArrayList
static ArrayList< LogSetGet> lst=new ArrayList<LogSetGet>();

当您声明变量或方法时,您可以使用“活动名称”在应用程序中的任何位置调用。

例如

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

您的活动名称只不过是您申报的地方 static ArrayList&lt; LogSetGet&GT; lst = new ArrayList();

答案 1 :(得分:0)

你写这个

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);
    }

希望你能得到这个

答案 2 :(得分:0)

取决于类型:

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)

然后你可以使用key string作为参数来读取下一个活动:

myIntent.getStringArrayListExtra("arrayPeople");

答案 3 :(得分:0)

如果您在ArrayList中的对象很大,或者您将在许多不同的活动中使用它们,我建议您使用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;
}}

然后,您将能够在应用程序的任何位置使用getInstance()获取TestSingleton的实例。内存中只有一个对象,您可以使用它而不用如何在活动之间移动它。只需在任何你想要的地方调用TestSingleton.getInstance()即可。