0
動的にforループを作成しました。複数のスピナーも含まれています。私は値を選択するために、スピナーにonItemSelectedListenerを使用しました。ユーザーがスピナーをクリックするたびに、データベースのスピナー値を保存するロジックを使用しましたが、forループ内のスピナーをクリックする前にonItemSelectedListenerが呼び出されます。forループ内のスピナーにonitemSelectedListenerを設定する方法
どのようにスピナーメソッドを呼び出すことができるのは、クリックされたときだけですが、forループの繰り返しごとではありませんか?
//set the questions for the user dynamically with the for loop
for (int ss = 0; ss < totalNoOfQuestions.size(); ss++) {
pos = ss;
final List<String> list = new ArrayList();
list.add("SELECT");
TextView textView = new TextView(activity);
textView.setTextSize(15);
textView.setTextColor(view.getResources().getColor(R.color.black));
textView.setTypeface(typeface1);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 20, 0, 0);
textView.setLayoutParams(params);
String questText = totalNoOfQuestions.get(ss).getParagraphQuestion();
final String questionNum = totalNoOfQuestions.get(ss).getQuestionNo();
String question = totalNoOfQuestions.get(ss).getQuestions();
textView.setText(questText + " " + questionNum + " " + question);
spinner[ss] = new Spinner(activity);
for (int i = 0; i < totalNoOfQuestions.get(0).getOptions().size(); i++) {
String option = totalNoOfQuestions.get(0).getOptions().get(i).getQuestionOptionNo();
list.add(option);
}
spinner[ss].setId(ss);
spinner[ss].setMinimumWidth(100);
//spinner.setBackground(activity.getResources().getDrawable(R.drawable.background_gradient));
arrayAdapter = new ArrayAdapter<String>(activity, android.R.layout.simple_spinner_dropdown_item, list);
spinner[ss].getBackground().setColorFilter(Color.parseColor("#000000"), PorterDuff.Mode.SRC_ATOP);
//spinner.setBackground(activity.getResources().getDrawable(R.drawable.background_gradient));
spinner[ss].setAdapter(arrayAdapter);
//retrieve value from the database if user already selected
List<QuestionsNAnswers> inventories = getAll();
for(int k = 0 ; k<inventories.size() ;k++){
QuestionsNAnswers questionsNAnswers = inventories.get(k);
String quesNo = questionsNAnswers.questionNo;
spinner[ss].setSelection(Integer.parseInt(quesNo));
}
final int finalSs = ss;
spinner[ss].setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// Toast.makeText(activity, "You Selected " + selection, Toast.LENGTH_SHORT).show();
int spinnerId = spinner[finalSs].getId();
questionNo = totalNoOfQuestions.get(spinnerId).getQuestionNo();
optionNo = spinner[finalSs].getItemAtPosition(position).toString();
//save the options in the database
QuestionsNAnswers questionsNAnswers = new QuestionsNAnswers();
questionsNAnswers.questionNo = questionNo;
questionsNAnswers.optionSelected = optionNo;
//save the records in the database
questionsNAnswers.save();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
linearLayoutForQuestions.addView(textView);
linearLayoutForQuestions.addView(spinner[ss]);
}