我有几个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
    }
}

09-25 21:36