在ListView中滚动视图时,调用什么方法?

时间:2014-12-16 09:52:14

标签: android listview scroll android-edittext

所以我有一个ListView我使用TextViewEditText的布局制作了自定义适配器。

对于EditText我使用List<String>来存储列表中所有EditTexts的内容。我这样做是使用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;
}

1 个答案:

答案 0 :(得分:0)

您可以使用其他听众:

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){}
});