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

如何从一个活动和另一个活动将元素添加到数组列表

如何从一个活动和另一个活动将元素添加到数组列表

呼唤远方 2022-07-14 16:21:35
我正在制作一个包含多项选择题的应用程序。例如,每个问题都有自己的活动QuestionTwoActivity。每次用户点击一个按钮,例如答案 A 的按钮,它会将他们移动到下一个活动,例如 from QuestionTwoActivityto QuestionThreeActivity。如果答案是正确的,他们的分数会增加 3。它有十个问题,总分可能是 30。我的应用程序的那部分运行良好,但是当我想要进行最终预览时,问题就开始了,该预览GradeActivity最初只显示用户的最终成绩。我想在成绩活动中添加一个列表,显示用户对每个问题的答案的答案,以及用户是否正确回答,所以我制作了一个自定义 arrayAdapter 来填充列表,然后尝试使用每个答案的onclick方法根据回答的问题向arrayadapter的arraylist添加一个元素,但这会导致应用程序崩溃这是gradeActivity仅在回答第十个问题后才打开的代码:import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ListView;import android.widget.TextView;import java.util.ArrayList;public class Grade extends AppCompatActivity{    examark mExamGrade; // declaring an instance of the examark class to call getMark method    double mark; // an int object to store the exam mark in it    TextView mGradeTextView;    TextView mNameTextView;    ListView mPreviewListView;    static ArrayList<answers_preview_data> mPreviewArrayList;    PreviewAdapter mPreviewAdapter;    examark name;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_grade);        int colorRed = getResources().getColor(R.color.colorRed);        int colorOrange = getResources().getColor(R.color.colorOrange);        int colorYellow = getResources().getColor(R.color.colorYellow);        int colorGreen = getResources().getColor(R.color.colorGreen);        mExamGrade = new examark();        name = new examark();        mark = mExamGrade.getExamMark();// storing the exam mark in the mark variable        mGradeTextView = (TextView) findViewById(R.id.grade); // initializing the view responsible for showing the final mark        mGradeTextView.setText(String.valueOf(mark));        mNameTextView = (TextView) findViewById(R.id.name_text_view);        String nameOfQuizzer = name.getNameOfQuizTaker();        mNameTextView.setText(nameOfQuizzer);
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您可以实施以下选项之一:

  • 不好但很快 - 在你Activity的构造函数中初始化列表而不是onCreate()方法

  • 正确但缓慢 - 将您的值存储在数据库中,并在需要时获取它们


查看完整回答
反对 回复 2022-07-14
?
潇潇雨雨

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

您可以遵循单例模式。本质上,您希望创建一个可以从任何地方访问的全局列表。你可以把它放在几个地方,我建议Application把它放在那里作为一个好的开始。


您可能有自己的Application,但如果没有,您还需要在清单中注册它。


所以,我创建了一个名为 的应用程序MyApp,它从Application. 这将包含我们可以从任何地方访问的答案列表。


public class MyApp extends Application {


    // A public static list of answers

    public static ArrayList<answers_preview_data> answers = new ArrayList<>();


    @Override

    public void onCreate() {

        super.onCreate();

        // do other app setup ...

    }

}

现在,在您的问题中,我们可以轻松地向此列表添加新答案。


public class QuestionOne extends AppCompatActivity implements View.OnClickListener {


    @Override

    public void onClick(View v) {

        // Adding the new answer to your list.

        MyApp.answers.add(new answers_preview_data());

    }


}

在您的 Grade 课程中,我们可以获取列表并在本地使用它。


public class Grade extends AppCompatActivity {


    private ArrayList<answers_preview_data> mPreviewArrayList;


    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);


        mPreviewArrayList = MyApp.answers;

        // use your list ...

    }

}


查看完整回答
反对 回复 2022-07-14
  • 2 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号