我有几个EditText字段,我想使用setOnFocusChangeListener保存到SQLiteDatabase中。我是否必须分别在每个对象上设置onFocusChangeListener,或者是否存在某种形式的包罗万象? (getActivity()。findViewByID,因为这是一个片段)
final TextView txtName = (TextView)getActivity().findViewById(R.id.clientHeader);
final TextView txtCompany = (TextView)getActivity().findViewById(R.id.txtContactCompany);
final TextView txtPosition = (TextView)getActivity().findViewById(R.id.txtContactPosition);
txtName.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus) {
saveThisItem(txtClientID.getText().toString(), "name", txtName.getText().toString());
}
}
});
txtCompany.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus) {
saveThisItem(txtClientID.getText().toString(), "company", txtCompany.getText().toString());
}
}
});
txtPosition.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus) {
saveThisItem(txtClientID.getText().toString(), "position", txtPosition.getText().toString());
}
}
});
像...有什么办法可以让ArrayList 的EditText View ,分配一个指针(对不起,不确定如何)到现有的editTexts并将onFocusChangeListener设置为整个arraylist吗?或者,甚至遍历ArrayList并将onFocusChangeListener设置为每个成员?
还是一种检测ANY onFocusChangeListener事件并仅将所有数据保存到数据库的方法,而不管偶数发生在哪个EditText上?
最佳答案
好吧,您可以让自己的 Activity 实现OnFocusChangeListener
。这样,您所有的更改都将在一个方法上进行,但是您将必须通过使用v.getId()
获取 View ID并检查相应的 View 来检查哪个 View 更改了焦点。
@Override
public void onFocusChange(View v, boolean hasFocus) {
switch(v.getId()){
case r.id.editText1:
break;
...etc
}
}