首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >EditText in ListView在滚动中丢失内容

EditText in ListView在滚动中丢失内容
EN

Stack Overflow用户
提问于 2015-06-11 07:14:38
回答 5查看 1.8K关注 0票数 1

我一直在寻找解决问题的方法,找到答案,但没有一个对我有用。/我在每个列表项中都有一个带有编辑文本的列表视图,当滚动并再次向上滚动时,编辑的编辑文本的内容已经丢失,或者其他编辑文本已经占用了他的价值。

http://i.stack.imgur.com/zWu0H.png

我有一个全局textWatcher,并动态地添加和删除它。编辑内容不断丢失。

代码语言:javascript
运行
复制
 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) {

    }
};

我工作了一个小时,你能帮我解决一下我做错了什么吗?

EN

Stack Overflow用户

发布于 2015-06-11 07:44:07

将文本处理程序代码移动到getView()中

代码语言:javascript
运行
复制
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;
}
票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30774050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档