我有一个带有EditText的列表项,我不知道会有多少个项。我在EditText中输入一些文本,然后向下滚动ListView时遇到问题,再次向上滚动后,第一个EditText中没有文本,或者ListView中其他EditText中有一些文本。
我已经尝试过TextWatcher,并将数据保存到数组中,但是问题是ListView中返回的视图位置并非总是正确的,因此我从数组中丢失了一些数据。-.-
如何在ListView中检测正确的视图位置?
例如:
如果我在ListView中有10个项目,并且当前只有其中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;
}
红颜莎娜
繁花如伊
相关分类