[Android] View(혹은 Layout) 내의 요소(ex: EditText)들을 순회(loop)하면서 각 요소(element)의 id를 key로 하여 SharedPreferences 에 값을 저장하는 샘플코드

By | 12월 29, 2020

* 정의부

/**
 * view 하위의 특정 TableLayout의 TableRow를 순회하면서 EditText를 찾고,
 * 각 EditText의 id 문자열로 SharedPreferences(혹은 Constants)를 조회한 결과값을 EditText에 채워 넣는다.
 *
 * @param rootView
 * @param tableLayoutId
 */
public static void fillSavedDataToForm(View rootView, int tableLayoutId) {
    TableLayout tableLayout = (TableLayout) rootView.findViewById(tableLayoutId);
    TableRow tableRow;
    View tmpView;
    EditText et;
    String id, key, val;
    for(int i=0; i<tableLayout.getChildCount(); i++){
        tableRow = (TableRow)tableLayout.getChildAt(i);
        for(int j=0; j<tableRow.getChildCount(); j++){
            tmpView = tableRow.getChildAt(j);
            if(tmpView instanceof EditText){
                et = (EditText)tmpView;
                id = et.getResources().getResourceEntryName(et.getId());
                key = id.substring(3); // id에서 "et_" 제거
                val = StringUtil.getPropStringForEnv(key);
                et.setText(val);
                Log.d("##", "EditText id:["+id+"], key:["+key+"], val:["+val+"]");
            }
        }
    }
}

 

* 호출부

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view  = super.initView(inflater, container, R.layout.fragment_authnewweb_authorize2_case1);
    // 저장되어 있던 폼데이터를 화면에 채워넣기
    FragmentUtil.fillSavedDataToForm(view, R.id.auth2Case1FormTable);
    return view;
}

 

 

 

 

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments