我一直在寻找解决问题的方法,找到答案,但没有一个对我有用。/我在每个列表项中都有一个带有编辑文本的列表视图,当滚动并再次向上滚动时,编辑的编辑文本的内容已经丢失,或者其他编辑文本已经占用了他的价值。
http://i.stack.imgur.com/zWu0H.png
我有一个全局textWatcher,并动态地添加和删除它。编辑内容不断丢失。
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
ArrayPosition = position;
if(convertView == null)
{
LayoutInflater inflater = (LayoutInflater) AdapterContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.item_list_order, parent, false);
holder = new ViewHolder();
holder.FlightTimeTextView = (TextView) convertView.findViewById(R.id.itemFlightTimeTextView);
holder.BusNumberEditText = (EditText) convertView.findViewById(R.id.busNumberEditText);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final Order order = Orders.get(position);
holder.FlightTimeTextView.setText(order.getFlightTime());
holder.BusNumberEditText.removeTextChangedListener(textWatcher);
Log.d("String in array String", HolderBusNumbers[position]);
holder.BusNumberEditText.setText(HolderBusNumbers[position]);
holder.BusNumberEditText.addTextChangedListener(textWatcher);
return convertView;
}
int ArrayPosition = 0;
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d("TextWatcher", s.toString());
HolderBusNumbers[ArrayPosition] = s.toString();
}
@Override
public void afterTextChanged(Editable s) {
}
};我工作了一个小时,你能帮我解决一下我做错了什么吗?
发布于 2015-06-11 07:44:07
将文本处理程序代码移动到getView()中
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
ArrayPosition = position;
if(convertView == null)
{
LayoutInflater inflater = (LayoutInflater) AdapterContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.item_list_order, parent, false);
holder = new ViewHolder();
holder.FlightTimeTextView = (TextView) convertView.findViewById(R.id.itemFlightTimeTextView);
holder.BusNumberEditText = (EditText) convertView.findViewById(R.id.busNumberEditText);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final Order order = Orders.get(position);
holder.FlightTimeTextView.setText(order.getFlightTime());
holder.BusNumberEditText.removeTextChangedListener(textWatcher);
Log.d("String in array String", HolderBusNumbers[position]);
holder.BusNumberEditText.setText(HolderBusNumbers[position]);
holder.BusNumberEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
Log.d("TextWatcher", s.toString());
HolderBusNumbers[ArrayPosition] = s.toString();
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
return convertView;
}https://stackoverflow.com/questions/30774050
复制相似问题