Java 如何将对象从ArrayList传递到新活动,然后再接收该对象?
我尝试将对象传递给新活动,但遇到问题。我的ArrayList以这种方式使用另一个类:Java 如何将对象从ArrayList传递到新活动,然后再接收该对象?,java,android,android-activity,arraylist,parcelable,Java,Android,Android Activity,Arraylist,Parcelable,我尝试将对象传递给新活动,但遇到问题。我的ArrayList以这种方式使用另一个类: ArrayList<ListData> myList = new ArrayList<>(); listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, V
ArrayList<ListData> myList = new ArrayList<>();
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
ListData listdata = myList.get(position);
ListData dataToSend = new ListData();
dataToSend.setStrefa(listdata.getStrefa());
dataToSend.setDzielnica(listdata.getDzielnica());
dataToSend.setAdres(listdata.getAdres());
dataToSend.setKryteria(listdata.getKryteria());
dataToSend.setTelefon(listdata.getTelefon());
dataToSend.setData(listdata.getData());
Intent intent = new Intent(Zlecenia.this, Zlecenie.class);
intent.putExtra("myData", dataToSend);
startActivity(intent);
overridePendingTransition(R.anim.fade_in, R.anim.no_animation);
}
});
ArrayList myList=new ArrayList();
一切都很好,我正在向mList添加一些对象,我的listview工作正常。
我尝试通过以下方式在单击后传递对象:
ArrayList<ListData> myList = new ArrayList<>();
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
ListData listdata = myList.get(position);
ListData dataToSend = new ListData();
dataToSend.setStrefa(listdata.getStrefa());
dataToSend.setDzielnica(listdata.getDzielnica());
dataToSend.setAdres(listdata.getAdres());
dataToSend.setKryteria(listdata.getKryteria());
dataToSend.setTelefon(listdata.getTelefon());
dataToSend.setData(listdata.getData());
Intent intent = new Intent(Zlecenia.this, Zlecenie.class);
intent.putExtra("myData", dataToSend);
startActivity(intent);
overridePendingTransition(R.anim.fade_in, R.anim.no_animation);
}
});
listview.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
ListData ListData=myList.get(位置);
ListData dataToSend=新建ListData();
dataToSend.setStrefa(listdata.getStrefa());
dataToSend.setDzielnica(listdata.getDzielnica());
setAdres(listdata.getAdres());
setKryteria(listdata.getKryteria());
dataToSend.setTelefon(listdata.getTelefon());
setData(listdata.getData());
意向意向=新意向(Zlecenia.this,Zlecenie.class);
intent.putExtra(“myData”,dataToSend);
星触觉(意向);
覆盖渐变(R.anim.fade\u in,R.anim.no\u动画);
}
});
这是一个问题,因为“bundle.putParcelableArrayList(“listdata”,listdata);”标记为红色。这迫使我在ListData类中使用extends Parcelable,但当我添加此extends时,我的ArrayList为空。我该怎么办
我的列表数据:
public class ListData implements Parcelable{
String Strefa;
String Adres;
String Kryteria;
String Telefon;
String Data;
String Dzielnica;
String Ilosc;
/* Zlecenia */
public String getStrefa() {
return Strefa;
}
public void setStrefa(String strefa) {
this.Strefa = strefa;
}
public String getAdres() {
return Adres;
}
public void setAdres(String adres) {
this.Adres = adres;
}
public String getKryteria() {
return Kryteria;
}
public void setKryteria(String kryteria) {
this.Kryteria = kryteria;
}
public String getTelefon() {
return Telefon;
}
public void setTelefon(String telefon) {
this.Telefon = telefon;
}
public String getData() {
return Data;
}
public void setData(String data) {
this.Data = data;
}
/* Statystyki */
public String getDzielnica() {
return Dzielnica;
}
public void setDzielnica(String dzielnica) {
this.Dzielnica = dzielnica;
}
public String getIlosc() {
return Ilosc;
}
public void setIlosc(String ilosc) {
this.Ilosc = ilosc;
}
public ListData() {
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(Strefa);
dest.writeString(Dzielnica);
dest.writeString(Adres);
dest.writeString(Kryteria);
dest.writeString(Telefon);
dest.writeString(Data);
}
private ListData(Parcel in) {
Strefa = in.readString();
Dzielnica = in.readString();
Adres = in.readString();
Kryteria = in.readString();
Telefon = in.readString();
Data = in.readString();
}
public static final Parcelable.Creator<ListData> CREATOR
= new Parcelable.Creator<ListData>() {
@Override
public ListData createFromParcel(Parcel in) {
return new ListData(in);
}
@Override
public ListData[] newArray(int size) {
return new ListData[size];
}
};
}
public类ListData实现可包裹{
字符串Strefa;
字符串地址;
弦Kryteria;
弦乐电话;
字符串数据;
丝状Dzielnica;
字符串Ilosc;
/*兹勒塞尼亚*/
公共字符串getStrefa(){
返回Strefa;
}
公共无效设置strefa(字符串strefa){
这个。Strefa=Strefa;
}
公共字符串getAdres(){
返回地址;
}
公共无效设置地址(字符串地址){
这个。Adres=Adres;
}
公共字符串getKryteria(){
返回Kryteria;
}
public void setKryteria(字符串kryteria){
这个.Kryteria=Kryteria;
}
公共字符串getTelefon(){
返回电话;
}
公共电话(字符串电话){
this.Telefon=Telefon;
}
公共字符串getData(){
返回数据;
}
公共void setData(字符串数据){
这个。数据=数据;
}
/*斯塔蒂斯基*/
公共字符串getDzielnica(){
返回Dzielnica;
}
公共无效集合dzielnica(字符串dzielnica){
这个.Dzielnica=Dzielnica;
}
公共字符串getIlosc(){
返回Ilosc;
}
公共无效设置ilosc(字符串ilosc){
这个.Ilosc=Ilosc;
}
公共列表数据(){
}
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目的地书面记录(Strefa);
目的地登记(Dzielnica);
目的地书面记录(地址);
目的地记录(Kryteria);
目的地记录(电话);
目的写入(数据);
}
专用ListData(包裹输入){
Strefa=in.readString();
Dzielnica=in.readString();
Adres=in.readString();
Kryteria=in.readString();
Telefon=in.readString();
Data=in.readString();
}
公共静态最终包裹。创建者
=新的Parcelable.Creator(){
@凌驾
公共列表数据createFromParcel(地块在中){
返回新的ListData(在中);
}
@凌驾
公共ListData[]新数组(整数大小){
返回新的ListData[大小];
}
};
}
在课堂上试试这个
public class ListData implements Serializable
你能同时显示列表数据吗?我更新了我的问题。这可能有助于更好地解释我创建了一个MyParcelable类。如何传递给listdata的这个类listdata对象?我不明白。虽然这可能会回答这个问题,但是请考虑解释为什么他应该尝试它。我读到PARCELLIT更快,所以我想用这个解决方案。