繁体   English   中英

在ListView中将视图滚动出视图时会调用什么方法?

[英]What method is called when a view is scrolled out of view in ListView?

因此,我有一个ListView ,使用带有TextViewEditText的布局为其制作了自定义适配器。

对于EditText我使用List<String>将所有EditText的内容存储在列表中。 我使用OnFocusChangeListener( )完成此操作。

我遇到的问题是,当EditText处于焦点状态并且我滚动了足够多的内容以便其视图被回收时,我松开了它的内容,但是如果我单击鼠标左键使其不集中,那么在将其滚动到可见区域之外之前它会正常工作。

我本来是想在回收或销毁它时保存它的内容,所以这就是为什么我问将其滚动到可见区域之外时调用什么方法。 或者,当列表开始滚动时,我可以执行此操作(如果有可以使用的方法)。

这是我的自定义适配器中的getView方法:

public View getView(final int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;

    if(convertView == null)
    {
        holder = new ViewHolder();
        convertView = inflater.inflate(R.layout.list_item_edit_content, null);

        holder.input = (EditText) convertView.findViewById(R.id.input);
        holder.title = (TextView) convertView.findViewById(R.id.rowName);
        convertView.setTag(holder);
    }
    else
    {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.title.setText(columnNames.get(position));
    holder.input.setText(values.get(position));

    holder.input.setOnFocusChangeListener(new OnFocusChangeListener() { 
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(!hasFocus)
            {
                values.set(position, holder.input.getText().toString());
            }
        }
    });
    return convertView;
}

private class ViewHolder
{
    EditText input;
    TextView title;
}

您可以使用其他监听器:

holder.input.addTextChangedListener(new TextWatcher(){
    public void afterTextChanged(Editable s) {}
    public void beforeTextChanged(CharSequence s, int start, int count, int after){}
    public void onTextChanged(CharSequence s, int start, int before, int count){}
}); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM