Reputation: 171
I'm facing the problem with hashmap and arraylist....My problem is...
I have HashMap like this..
public class QuestionData {
private String questionID;
private String question;
private String answer;
public String getQuestionID() {
return questionID;
}
public void setQuestionID(String questionID) {
this.questionID = questionID;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
}
while (is another question to add) {
QuestionData questionData = new QuestionData();
questionData.setQuestionID(questionID);
questionData.setQuestion(question);
questionData.setAnswer(answer);
ArrayList < QuestionData > questionDatas = new ArrayList < QuestionData > ();
questionDatas.add(questionData);
}
int counter = 0;
Button nextQuestion = (Button) findViewById(R.id.your_button);
nextQuestion.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (counter < questionDatas.size()) {
QuestionData question = questionDatas.get(counter);
showNextQuestion(question);
counter++;
}
return false;
}
});
showNextQuestion(QuestionData data) {
data.getQuestionID();
data.getQuestion();
data getAnswer();
}
But I need the both strings questionid and question in a single key of hashmap, and then I want to convert this single key into arraylist...
After that I want to increment the arraylist when I click on the next button...for next question to display based upon questionid...
how to do this?
Upvotes: 0
Views: 405
Reputation: 197
I like @ViVart's answer a lot better. To add on to his, you can then implement your button:
ArrayList<QuestionData> questionDatas = new ArrayList<QuestionData> ();
while (is another question to add) {
if (firstQuestionParsed) {
TextView questionID_tv = (TextView) findViewById(R.id.your_textview);
TextView question_tv = (TextView) findViewById(R.id.your_textview);
TextView answer_tv = (TextView) findViewById(R.id.your_textview);
questionID_tv.setText(questionID);
question_tv.setText(question);
answer_tv.setText(answer);
}
QuestionData questionData = new QuestionData();
questionData.setQuestionID(questionID);
questionData.setQuestion(question);
questionData.setAnswer(answer);
questionDatas.add(questionData);
}
int counter = 0;
Button nextQuestion = (Button) findViewById(R.id.your_button);
nextQuestion.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (counter < questionDatas.size()) {
QuestionData question = questionDatas.get(counter);
showNextQuestion(question);
counter++;
}
return false;
}
});
Then you just need to implement
showNextQuestion(QuestionData data) {
data.getQuestionID();
data.getQuestion();
data getAnswer();
}
Upvotes: 0
Reputation: 15313
create data only class for your question
public class QuestionData {
private String questionID;
private String question;
private String answer;
public String getQuestionID() {
return questionID;
}
public void setQuestionID(String questionID) {
this.questionID = questionID;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
}
and use hash map with this data structure.
QuestionData questionData = new QuestionData();
questionData.setQuestionID(questionID);
questionData.setQuestion(question);
questionData.setAnswer(answer);
// HashMap<String, QuestionData> map = new HashMap<String, QuestionData>();
ArrayList<QuestionData> questionDatas = new ArrayList<QuestionData>();
questionDatas.add(questionData);
Upvotes: 1