我尝试运行此代码,我全局设置了2个arraylist, answerList和questionList 。首先我将数据添加到答案对象,然后将其放在answerList中,之后我将该answerList放入问题对象。最后我将问题对象放入questionList。首先添加questionList变为如下:
[
{
"mAnswers":[
{
"**mChoiceId":1**
}
],
"mQuestionId":4
}
]
然后我将新数据添加到questionList中,这就是结果:
[
{
"mAnswers":[
{
"**mChoiceId":5**
}
],
"mQuestionId":4
},
{
"mAnswers":[
{
"**mChoiceId":5**
}
],
"mQuestionId":5
}
]
正如你所看到的,第一个mChoiceId是1,其中questionId是4,在我添加新数组后,第一个mChoiceId被更新为第二个mChoiceId的值。当我添加新数组时我想要的是第一个mChoiceId仍然是1并且没有被我刚刚添加的新mChoiceId更新
public void onClick(int position, Choice question) {
if (questionList.size() == 0) {
insertAnswerToQuestion(question.getQuestionId(),question.getChoiceId());
} else {
for (int j = 0; j < questionList.size(); j++) {
if (checkIfQuestionIdSend(questionList.get(j).getmQuestionId(), question.getQuestionId())) {
questionList.get(j).getmAnswers().get(0).setmChoiceId(question.getChoiceId());
isHasSameQuestionId = true;
} else {
if (j == questionList.size() - 1) {
if (!isHasSameQuestionId) {
insertAnswerToQuestion(question.getQuestionId(),question.getChoiceId());
}
}
}
}
}
isHasSameQuestionId = false;
}
private void insertAnswerToQuestion(int QuestionId, int ChoiceId){
answerList.clear();
Answer answer = new Answer();
answer.setmChoiceId(ChoiceId);
answerList.add(answer);
asia.popbox.app.V2.Network.BodyApiReq.FreeGiftAnswerPostBody.Question quest = new asia.popbox.app.V2.Network.BodyApiReq.FreeGiftAnswerPostBody.Question();
quest.setmAnswers(answerList);
quest.setmQuestionId(QuestionId);
questionList.add(quest);
}
这是问题类:
package asia.popbox.app.V2.Network.BodyApiReq.FreeGiftAnswerPostBody;
import java.util.List;
public class Question {
private List<Answer> mAnswers;
private int mQuestionId;
public Question(List<Answer> mAnswers, int mQuestionId) {
this.mAnswers = mAnswers;
this.mQuestionId = mQuestionId;
}
public Question() {
}
public List<Answer> getmAnswers() {
return mAnswers;
}
public void setmAnswers(List<Answer> mAnswers) {
this.mAnswers = mAnswers;
}
public int getmQuestionId() {
return mQuestionId;
}
public void setmQuestionId(int mQuestionId) {
this.mQuestionId = mQuestionId;
}
}
这是答案类:
package asia.popbox.app.V2.Network.BodyApiReq.FreeGiftAnswerPostBody;
public class Answer {
private int mChoiceId;
public int getmChoiceId() {
return mChoiceId;
}
public void setmChoiceId(int mChoiceId) {
this.mChoiceId = mChoiceId;
}
public Answer( ) {
}
public Answer(int mChoiceId) {
this.mChoiceId = mChoiceId;
}
}