У меня есть элемент списка с EditText в нем, я не знаю, сколько там будет элементов. У меня проблема, когда я ввожу текст в EditText, а затем прокручиваю вниз ListView, после того как я прокрутил вверх, в моем первом EditText нет текста, или есть текст из другого EditText из ListView.
Я пробовал TextWatcher, и сохранение данных в массив, но проблема в том, что возвращаемая позиция представления в ListView не всегда правильная, поэтому я потерял некоторые данные из массива. -.-
Как определить правильную позицию представления в ListView?
Например:
Если у меня 10 элементов в ListView, и только 5 из них видны в данный момент. Адаптер возвращает позицию от 0 до 4... это нормально. Когда я прокручиваю вниз, позиция элемента 6 становится 0...wtf? и я теряю данные из массива на позиции 0 :)
Я использую ArrayAdapter.
Пожалуйста, помогите.
Вот код:
public View getView(int position, View convertView, ViewGroup parent) {
tmp_position = position;
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.element_in_game, null);
holder.scoreToUpdate = (EditText) convertView
.findViewById(R.id.elementUpdateScore);
holder.scoreToUpdate.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
scoresToUpdate[tmp_position] = s.toString();
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
initScoresToUpdateEditTexts(holder.scoreToUpdate, hint);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
holder.scoreToUpdate.setText(scoresToUpdate[tmp_position]);
}
return convertView;
}