所以我有一个ListView
我使用TextView
和EditText
的布局制作了自定义适配器。
对于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;
}
答案 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){}
});