Java 如何通过ArrayList<;类别>;从一项活动到另一项活动?
我有这个Java 如何通过ArrayList<;类别>;从一项活动到另一项活动?,java,android,object,arraylist,Java,Android,Object,Arraylist,我有这个arraylisttolet ToLet类是POJO类 现在,我如何将这些信息从一个活动传递到另一个活动?最好的方法是什么 我已经浏览了以下链接 因此,如果有人知道答案,请在创建意图对象时告诉我,您可以利用以下两种方法 用于在两个活动之间传递对象 下面是关于putParceble的介绍 仔细复习。在这里,他们使用Hashmap存储值并将对象传递给另一个类 或 创建一个类,ObjectA。在这方面,我使用了所有setter和getter方法 package com.Parcabl
arraylisttolet代码>
ToLet类是POJO类
现在,我如何将这些信息从一个活动传递到另一个活动?最好的方法是什么
我已经浏览了以下链接
因此,如果有人知道答案,请在创建意图对象时告诉我,您可以利用以下两种方法
用于在两个活动之间传递对象
下面是关于putParceble的介绍
仔细复习。在这里,他们使用Hashmap存储值并将对象传递给另一个类
或
创建一个类,ObjectA
。在这方面,我使用了所有setter和getter方法
package com.ParcableExample.org;
import android.os.Parcel;
import android.os.Parcelable;
/**
* A basic object that can be parcelled to
* transfer between objects.
*/
public class ObjectA implements Parcelable
{
private String strValue = null;
private int intValue = 0;
/**
* Standard basic constructor for non-parcel
* object creation.
*/
public ObjectA()
{
}
/**
*
* Constructor to use when re-constructing object
* from a parcel.
*
* @param in a parcel from which to read this object.
*/
public ObjectA(Parcel in)
{
readFromParcel(in);
}
/**
* Standard getter
*
* @return strValue
*/
public String getStrValue()
{
return this.strValue;
}
/**
* Standard setter
*
* @param strValue
*/
public void setStrValue(String strValue)
{
this.strValue = strValue;
}
/**
* Standard getter
*
* @return intValue
*/
public Integer getIntValue()
{
return this.intValue;
}
/**
* Standard setter
*
* @param strValue
*/
public void setIntValue(Integer intValue)
{
this.intValue = intValue;
}
@Override
public int describeContents()
{
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags)
{
// We just need to write each field into the
// parcel. When we read from parcel, they
// will come back in the same order
dest.writeString(this.strValue);
dest.writeInt(this.intValue);
}
/**
*
* Called from the constructor to create this
* object from a parcel.
*
* @param in parcel from which to re-create object.
*/
public void readFromParcel(Parcel in)
{
// We just need to read back each
// field in the order that it was
// written to the parcel
this.strValue = in.readString();
this.intValue = in.readInt();
}
/**
*
* This field is needed for Android to be able to
* create new objects, individually or as arrays.
*
* This also means that you can use use the default
* constructor to create the object and use another
* method to hyrdate it as necessary.
*/
@SuppressWarnings("unchecked")
public static final Parcelable.Creator CREATOR = new Parcelable.Creator()
{
@Override
public ObjectA createFromParcel(Parcel in)
{
return new ObjectA(in);
}
@Override
public Object[] newArray(int size)
{
return new ObjectA[size];
}
};
}
然后创建一个用于将对象发送到另一个活动的活动
package com.ParcableExample.org;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ParcableExample extends Activity
{
private Button btnClick;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initControls();
}
private void initControls()
{
btnClick = (Button)findViewById(R.id.btnClick);
btnClick.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
ObjectA obj = new ObjectA();
obj.setIntValue(1);
obj.setStrValue("Chirag");
Intent i = new Intent(ParcableExample.this,MyActivity.class);
i.putExtra("com.package.ObjectA", obj);
startActivity(i);
}
});
}
}
<activity android:name="yourcurrentclass" />
<activity android:name="yournextclass" />
现在,最后让另一个活动读取对象并从中获取值
package com.ParcableExample.org;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MyActivity extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle bundle = getIntent().getExtras();
ObjectA obj = bundle.getParcelable("com.package.ObjectA");
Log.i("---------- Id ",":: "+obj.getIntValue());
Log.i("---------- Name ",":: "+obj.getStrValue());
}
}
您还可以使用它传递ArrayList tolet;从一个活动到另一个活动
package com.ParcableExample.org;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ParcableExample extends Activity
{
private Button btnClick;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initControls();
}
private void initControls()
{
btnClick = (Button)findViewById(R.id.btnClick);
btnClick.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
ObjectA obj = new ObjectA();
obj.setIntValue(1);
obj.setStrValue("Chirag");
Intent i = new Intent(ParcableExample.this,MyActivity.class);
i.putExtra("com.package.ObjectA", obj);
startActivity(i);
}
});
}
}
<activity android:name="yourcurrentclass" />
<activity android:name="yournextclass" />
创建类的对象:-
ToLet obj = new ToLet();
ArrayList<ToLet> tolet;
int size = tolet.getSize();
Intent ii = new Intent(your_current_class.this, next_class_where_you_want_to_use);
ii.putExtra("listsize",size);
startActivity(ii);
和AndroidMainest.xml文件更新此活动
package com.ParcableExample.org;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ParcableExample extends Activity
{
private Button btnClick;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initControls();
}
private void initControls()
{
btnClick = (Button)findViewById(R.id.btnClick);
btnClick.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
ObjectA obj = new ObjectA();
obj.setIntValue(1);
obj.setStrValue("Chirag");
Intent i = new Intent(ParcableExample.this,MyActivity.class);
i.putExtra("com.package.ObjectA", obj);
startActivity(i);
}
});
}
}
<activity android:name="yourcurrentclass" />
<activity android:name="yournextclass" />
它应该可以解决您的问题。为什么它对您没有帮助?我不知道如何实现它?您应该重新阅读您链接的两篇文章。这里有很多很好的答案。只要参考这个。它准确地显示了你需要什么。[1] :@ling.s所以你要我说我需要让我的ToLet实现可包裹?它不仅仅是一个对象,它的ArrayList ToLet;ToLet班是POJO吗?现在?您可以将ArrayList作为对象传递给另一个活动。请使用相同的方法进行尝试\n您能帮我一下吗?为什么它会给我?在上面的例子中,你们有关于字符串和int的,你们正在读和写的,我在列表中有?如何读取和写入?不,我只需要传递对象,因为我需要在下一个类中获取arraylist的大小。它将获取arraylist的大小并传递给您的另一个活动。不,现在我只获取该大小。对象如何?有很多解决方案:还有您的查询。检查并尝试使用。坏包裹例外是我得到的吗?为什么它会给我?