Я работаю над приложением для идентификации деревьев. Поэтому я позволяю пользователю отвечать на вопросы о заданных характеристиках, выбирая соответствующую характеристику из счетчика. Поскольку у дерева много характеристик, у меня есть целый список блесен. Все идет нормально. К сожалению, счетчики сбрасываются, как только пользователь прокручивает их с экрана. Важно, что я могу избежать этого!
Итак: как мне этого избежать?
Я очень ценю вашу помощь!
public class SearchAdapter extends ArrayAdapter<SearchItem>{
SearchAdapter() {
super(SearchWizard.this, R.layout.question);
}
public View getView(int position, View convertView, ViewGroup parent) {
View ret = convertView;
if ( ret == null ) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ret = inflater.inflate(R.layout.question, null);
}
SearchItem item = getItem(position);
String question = item.getQuestion();
TextView question_text = (TextView) ret.findViewById(R.id.question_search);
assert( question_text != null );
question_text.setText(question);
Spinner question_spinner = (Spinner ) ret.findViewById(R.id.question_spinner);
assert( question_spinner != null );
question_spinner.setPrompt(question);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(SearchWizard.this,android.R.layout.simple_spinner_item, item.getOptions());
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
question_spinner.setAdapter(adapter);
question_spinner.setOnItemSelectedListener( new MyOnItemSelectedListener(position) );
question_spinner.setSelection(2);
return ret;
}
}
enter code herepublic class MyOnItemSelectedListener implements OnItemSelectedListener {
public int position;
public MyOnItemSelectedListener(int p) {
position = p;
}
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
LSsearchCriteria.set(position,Herbalist.encodeoptions(parent.getItemAtPosition(pos).toString()));
}
public void onNothingSelected(AdapterView<?> parent) {
// Do nothing.
}
}
public class MyOnItemSelectedListener implements OnItemSelectedListener {</p>
<code> public int position;
public MyOnItemSelectedListener(int p) {
position = p;
}
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
LSsearchCriteria.set(position,Herbalist.encodeoptions(parent.getItemAtPosition(pos).toString()));
}
public void onNothingSelected(AdapterView<?> parent) {
// Do nothing.
}
}
</code>