【问题标题】:How to Pass Custom Arraylist content from one Activity to another Activity in android如何将自定义 Arraylist 内容从一个 Activity 传递到 android 中的另一个 Activity
【发布时间】:2012-07-31 16:35:04
【问题描述】:

我在自定义数组列表中有一个对象为“finaljsoncontent”,现在我正在尝试将这个“finaljsoncontent”数组传递给另一个 Activity,我也尝试过 getter 和 setter,以及捆绑,但我无法帮助我该怎么做。 提前致谢。

【问题讨论】:

  • ArrayList jsonArrayList = new ArrayList(); jsonKey.year_rate = object.getString(yearArray[i]+"_year_rate"); jsonKey.year_pi = object.getString(yearArray[i]+"_year_pi"); jsonKey.year_apr = object.getString(yearArray[i]+"_year_apr"); jsonArrayList.add(jsonKey);如何将这个 jsonArrayList 从一个意图传递到另一个意图,我遇到了 Parcelable ,我不知道如何使用这个 Parcelable。帮我做这件事。

标签: android android-intent bundle


【解决方案1】:

看看这个:How do I pass an object from one activity to another on Android?

您的“JSonKey”类应该实现 parcealable 或 serializable,以便 Android 可以将它从一个活动“发送”到另一个活动。

【讨论】:

    【解决方案2】:

    您可以尝试实现Parcelable,然后您可以将其打包传递。您需要将您的对象减少到主要是原始类型才能做到这一点。否则,您可以扩展 Application 类并将其存储在那里。您可以使用对getApplicationContext() 的调用来检索它。或者,当然,您总是可以创建某种静态全局类,所有类都可以引用。

    这是我的 parcelable 实现之一。

    package warrior.mail.namespace;
    
    import android.os.Parcel;
    import android.os.Parcelable;
    
    public class JView implements Parcelable {
        public String subject;
        public String from;
        public boolean unread;
        public String body;
        public int inboxIndex;
        private long id;
        public static final Parcelable.Creator<JView> CREATOR = new Parcelable.Creator<JView>() {
    
            public JView createFromParcel(Parcel in) {
                return new JView(in);
            }
    
            public JView[] newArray(int size) {
                return new JView[size];
            }
    
        };
    
        public JView(){
            body = "";
        }
    
        public JView(String subject,String from,boolean unread){
            body = "";
            this.subject = subject;
            this.from = from;
            this.unread = unread;
        }
    
        public JView(Parcel parcel){
            subject = parcel.readString();
            from = parcel.readString();
            body = parcel.readString();
            unread = parcel.createBooleanArray()[0];
            inboxIndex = parcel.readInt();
        }
    
        @Override
        public int describeContents() {
            return inboxIndex;
        }
    
        @Override
        public void writeToParcel(Parcel out, int arg1) {
            out.writeString(subject);
            out.writeString(from);
            out.writeString(body);
            boolean[] array = new boolean[] {unread};
            out.writeBooleanArray(array);
            out.writeInt(inboxIndex);
        }
    
        public void setIndex(int index){
            inboxIndex = index;
        }
    
        public void setUnread(boolean arg){
            unread = arg;
        }
    
        public void setContent(String content){
            body = content;
        }
    
        public void setSubject(String subject){
            this.subject = subject;
        }
    
        public void setFrom(String f){
            from = f;
        }
    
        public void setId(long arg){
            id = arg;
        }
    
        public long getId(){
            return id;
        }
    
        public void updateIndex(){
    
        }
    }
    

    【讨论】:

    • 我在过去 2 小时内正在研究 Parcelable,我没有得到预期的输出,请帮我提供上述要求的样本。谢谢
    • 您想为哪个选项举例?
    • public class JsonKey { public String year_pi;公共字符串 year_apr;公共字符串年率;这是类。 ArrayList jsonArrayList = new ArrayList(); jsonKey.year_rate = object.getString(yearArray[i]+"_year_rate"); jsonKey.year_pi = object.getString(yearArray[i]+"_year_pi"); jsonKey.year_apr = object.getString(yearArray[i]+"_year_apr"); jsonArrayList.add(jsonKey);我需要通过意图将此数组列表带到下一个活动。
    • 好的,有两件事。 1. 将您的代码放在问题中,而不是在评论中。没有人愿意尝试阅读它。 2. 你不能指望我们编写你需要的代码来做这件事。我们可以为您指明正确的方向,或向您展示一个实施方案,但您的工作是完成您的项目。研究、询问、学习,然后去做。不自己动手怎么能学?查看我的示例,并将其应用于您的代码。如果您遇到问题,请将您的代码发布在顶部,以便我们查看。
    • 如果类只包含字符串,而你真的被卡住了,你可以为 JsonKey 中的 3 个字符串对象创建新的 ArrayLists,捆绑它们并在另一边重建 JsonKey。不是一个理想的解决方案...
    【解决方案3】:

    您可以使您的类Parcelable(特定于android)或使其像在java中一样可序列化(只需使用您的类编写实现Serializable)

    【讨论】:

      猜你喜欢
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 2021-10-10
      相关资源
      最近更新 更多