問題描述
我有幾個 EditText 字段,我想用 setOnFocusChangeListener 將它們保存到 SQLiteDatabase.我是否必須為每個單獨設置一個 onFocusChangeListener,或者是否有某種包羅萬象的方法?(getActivity().findViewByID 因為這是一個片段)
I have several EditText fields which I want to save to the SQLiteDatabase with setOnFocusChangeListener. Do I have to set an onFocusChangeListener on each one individually, or is there a catch-all of some sort? (getActivity().findViewByID because this is a fragment)
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 > 的 EditText 視圖,將指針(抱歉,不確定如何)分配給現有的 editTexts 并將 onFocusChangeListener 設置為整個數組列表?或者,甚至,遍歷 ArrayList 并將 onFocusChangeListener 設置為每個成員?
Like... is there some way to have a ArrayList < EditText > of EditText Views, assign a pointer (sorry, not sure how) to the existing editTexts and set the onFocusChangeListener to the whole arraylist? Or, even, iterate through the ArrayList and set the onFocusChangeListener to each member?
或者一種檢測任何 onFocusChangeListener 事件的方法,并將所有數據保存到數據庫中,而不管事件發生在什么 EditText 上?
Or a way to detect ANY onFocusChangeListener events, and just save all data to the database, regardless of what EditText the even occurred on?
推薦答案
好吧,你可以讓你的活動實現 OnFocusChangeListener
.這樣,您的所有更改都將在該方法上進行,但您必須通過使用 v.getId()
獲取視圖 ID 來檢查哪個視圖更改了焦點并進行相應處理.
Well, you could have your activity implement OnFocusChangeListener
. That way, all your changes will be on that one metho,d but you will have to check which view changed focus by getting the view id with v.getId()
and handle accordingly.
@Override
public void onFocusChange(View v, boolean hasFocus) {
switch(v.getId()){
case r.id.editText1:
break;
...etc
}
}
這篇關于所有 EditTexts 上的 EditText setOnFocusChangeListener的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!