У меня есть элемент списка с 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;
}