I Ansicht dynamisch durch for-Schleife angelegt haben. Es enthält auch mehrere Spinner. Ich habe onItemSelectedListener verwendet, damit der Spinner den Wert auswählt. Jedes Mal, wenn Benutzer klicken Spinner ich einige Logik verwendet haben, den Spinner Wert in der Datenbank zu speichern, aber onItemSelectedListener heißt noch vor den Spinner innerhalb der for-Schleife klicken.Wie for-Schleife für den Spinner nach innen setzen onitemSelectedListener
Wie könnte Methoden Spinner werden nur aufgerufen, wenn darauf geklickt wird, aber nicht für jeden für Schleifeniterationslatenzzeit?
//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]);
}