У меня есть элемент списка с EditText в нем, я не знаю, сколько предметов там будет. У меня проблема при вводе некоторого текста в EditText, а затем прокрутка вниз по списку ListView после того, как я снова прокручиваю текст, нет текста в моем первом EditText или есть какой-то текст из другого EditText из ListView.
Я пробовал TextWatcher и сохранял данные в массиве, но проблема в том, что возвращенная позиция представления в ListView не всегда правильная, поэтому я потерял некоторые данные из массива. -.-
Как определить правильное положение вида в ListView?
Например:
Если у меня есть 10 элементов в ListView, и только 5 из них в настоящее время видны. Возвращаемое положение адаптера от 0 до 4... это нормально. Когда я прокручиваю позицию позиции 6, 0... wtf? и я теряю данные из массива в позиции 0:)
Im, используя 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;
}