为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Android中使用Intent将对象的ArrayList从一个传递到另一个活动?

如何在Android中使用Intent将对象的ArrayList从一个传递到另一个活动?

倚天杖 2019-10-11 14:39:39
我的onClick()方法中的代码如下 List<Question> mQuestionsList = QuestionBank.getQuestions();现在,我有这行之后的意图,如下所示:  Intent resultIntent = new Intent(this, ResultActivity.class);  resultIntent.putParcelableArrayListExtra("QuestionsExtra", (ArrayList<? extends Parcelable>) mQuestionsList);  startActivity(resultIntent);我不知道如何在意图中将此问题列表从一个活动传递到另一个活动public class Question {    private int[] operands;    private int[] choices;    private int userAnswerIndex;    public Question(int[] operands, int[] choices) {        this.operands = operands;        this.choices = choices;        this.userAnswerIndex = -1;    }    public int[] getChoices() {        return choices;    }    public void setChoices(int[] choices) {        this.choices = choices;    }    public int[] getOperands() {        return operands;    }    public void setOperands(int[] operands) {        this.operands = operands;    }    public int getUserAnswerIndex() {        return userAnswerIndex;    }    public void setUserAnswerIndex(int userAnswerIndex) {        this.userAnswerIndex = userAnswerIndex;    }    public int getAnswer() {        int answer = 0;        for (int operand : operands) {            answer += operand;        }        return answer;    }    public boolean isCorrect() {        return getAnswer() == choices[this.userAnswerIndex];    }    public boolean hasAnswered() {        return userAnswerIndex != -1;    }
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

活动之间:为我工作


ArrayList<Object> object = new ArrayList<Object>();

Intent intent = new Intent(Current.class, Transfer.class);

Bundle args = new Bundle();

args.putSerializable("ARRAYLIST",(Serializable)object);

intent.putExtra("BUNDLE",args);

startActivity(intent);

在Transfer.class中


Intent intent = getIntent();

Bundle args = intent.getBundleExtra("BUNDLE");

ArrayList<Object> object = (ArrayList<Object>) args.getSerializable("ARRAYLIST");

希望这个帮助的人。


使用Parcelable在Activity之间传递数据


创建DataModel后,通常可以使用


例如,假设我们有一个json类型


{

    "bird": [{

        "id": 1,

        "name": "Chicken"

    }, {

        "id": 2,

        "name": "Eagle"

    }]

}

这里的鸟是一个列表,它包含两个元素,因此


我们将使用jsonschema2pojo创建模型


现在我们有了包含Bird of List的模型类Name BirdModel和Bird BirdModel,并且Bird包含名称和ID


转到bird类并添加接口“ 实现Parcelable ”


通过Alt + Enter在android studio中添加implemets方法


注意:将出现一个对话框,提示添加工具方法,然后按Enter


通过按Alt + Enter添加Parcelable实现


注意:将出现一个对话框,显示“添加可打包实施并再次输入”


现在将其传递给意图。


List<Bird> birds = birdModel.getBird();

Intent intent = new Intent(Current.this, Transfer.class);

Bundle bundle = new Bundle();

bundle.putParcelableArrayList("Birds", birds);

intent.putExtras(bundle);

startActivity(intent);

并在转移活动onCreate


List<Bird> challenge = this.getIntent().getExtras().getParcelableArrayList("Birds");

谢谢


如果有任何问题,请告诉我。


查看完整回答
反对 回复 2019-10-11
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

脚步:


将您的对象类实现为可序列化


public class Question implements Serializable`

将此放到您的源活动中


ArrayList<Question> mQuestionList = new ArrayList<Question>;

mQuestionsList = QuestionBank.getQuestions();  

mQuestionList.add(new Question(ops1, choices1));


Intent intent = new Intent(SourceActivity.this, TargetActivity.class);

intent.putExtra("QuestionListExtra", mQuestionList);

将此放入您的目标活动中


 ArrayList<Question> questions = new ArrayList<Question>();

 questions = (ArrayList<Questions>) getIntent().getSerializableExtra("QuestionListExtra");


查看完整回答
反对 回复 2019-10-11
?
弑天下

TA贡献1818条经验 获得超8个赞

效果很好


public class Question implements Serializable {

    private int[] operands;

    private int[] choices;

    private int userAnswerIndex;


   public Question(int[] operands, int[] choices) {

       this.operands = operands;

       this.choices = choices;

       this.userAnswerIndex = -1;

   }


   public int[] getChoices() {

       return choices;

   }


   public void setChoices(int[] choices) {

       this.choices = choices;

   }


   public int[] getOperands() {

       return operands;

   }


   public void setOperands(int[] operands) {

       this.operands = operands;

   }


   public int getUserAnswerIndex() {

       return userAnswerIndex;

   }


   public void setUserAnswerIndex(int userAnswerIndex) {

       this.userAnswerIndex = userAnswerIndex;

   }


   public int getAnswer() {

       int answer = 0;

       for (int operand : operands) {

           answer += operand;

       }

       return answer;

   }


   public boolean isCorrect() {

       return getAnswer() == choices[this.userAnswerIndex];

   }


   public boolean hasAnswered() {

       return userAnswerIndex != -1;

   }


   @Override

   public String toString() {

       StringBuilder builder = new StringBuilder();


       // Question

       builder.append("Question: ");

       for(int operand : operands) {

           builder.append(String.format("%d ", operand));

       }

       builder.append(System.getProperty("line.separator"));


       // Choices

       int answer = getAnswer();

       for (int choice : choices) {

           if (choice == answer) {

               builder.append(String.format("%d (A) ", choice));

           } else {

               builder.append(String.format("%d ", choice));

           }

       }

       return builder.toString();

     }

  }

在您的“源活动”中,使用以下命令:


  List<Question> mQuestionList = new ArrayList<Question>;

  mQuestionsList = QuestionBank.getQuestions();

  mQuestionList.add(new Question(ops1, choices1));


  Intent intent = new Intent(SourceActivity.this, TargetActivity.class);

  intent.putExtra("QuestionListExtra", ArrayList<Question>mQuestionList);

在您的目标活动中,使用以下命令:


  List<Question> questions = new ArrayList<Question>();

  questions = (ArrayList<Question>)getIntent().getSerializableExtra("QuestionListExtra");


查看完整回答
反对 回复 2019-10-11
  • 3 回答
  • 0 关注
  • 1192 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信