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

Android 在ListView中将视图从视图中滚出时调用什么方法?,android,listview,scroll,android-edittext,Android,Listview,Scroll,Android Edittext,因此,我有一个列表视图,我使用一个带有文本视图和编辑文本的布局为其制作了一个自定义适配器 对于编辑文本我使用列表存储列表中所有编辑文本的内容。我使用一个onfocuschangeenner()来实现这一点 我遇到的问题是,当一个EditText被聚焦时,我滚动到足够的位置,这样它的视图就可以循环使用,我会丢失它的内容,但是如果我在滚动出可见区域之前点击掉它,它就会变得不聚焦,这样效果会很好 我想在它被回收或销毁时保存它的内容,这就是为什么我要问当它滚动出可见区域时调用什么方法。或者我可以在列表开

因此,我有一个
列表视图
,我使用一个带有
文本视图
编辑文本
的布局为其制作了一个自定义适配器

对于
编辑文本
我使用
列表
存储列表中所有编辑文本的内容。我使用一个
onfocuschangeenner(
)来实现这一点

我遇到的问题是,当一个
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){}
}); 

请在此检查ListView的回收机制。这可能对您的方法有所帮助。@Vaibs。请确切地告诉我必须做什么。我认为那里的信息对于解决这里的问题是无用的。我刚才已经读过了。我知道它是怎么工作的。我用另一种方法解决了这个问题。我会发布一个更新,当它的doneIs值你的名单?如果是这样,问题是只有当
EditText
失去焦点时,它才会被更新。解决此问题的一种方法可能是使用
TextWatcher
来检查用户何时键入
EditText
,并每次更新
列表中的相关字符串。我不知道有什么方法可以在列表项从屏幕上滚动时调用,但是
getView(…)
方法可以用来实现您想要的。如果
convertView
不为空,则它是一个现有列表项,可能在
EditText
中有文本-在创建新列表项之前获取文本并添加到
列表中。@Squonk这是我第一次尝试这样做。我目前正在考虑将
onScrollListener
用于此适配器所连接的
ListView
。因此,每次我开始滚动时,它都会将数据保存在聚焦的视图中(
getCurrentFocus()
),但我不确定如何识别该视图在我的
列表视图中的位置。。它变得非常凌乱,所以我改为
onfocuschangelister()
它变得非常凌乱了?我不明白为什么。你能给我解释一下吗?