2016-05-30 19 views
0

まず、自分のアプリケーションを紹介したいので、必要なものがより良い視点を持っています。私は3つのテーブルdaysweeksweekdaysのデータベースを持っており、1つのアクティビティでは選択した週ごとに曜日テーブルからすべてのアイテムをフェッチしていますが、そのクラスのDayのすべてのメンバーにテキストを設定する方法はわかりません。私は、私が欲しいものを次の例で示します。Androidで複数のEditTextのテキストを設定する方法

私は複数のEditTextにテキストを設定しましたが、多くの繰り返しがありました。私は配列とループでこれをやりたい配列とループを使ってすべてのEditTextを初期化するのに成功しましたが、すべてのEditTextの設定テキストを実装する方法はわかりません。

これは繰り返しの部分である:

for (int i = 0; i < days.size(); i++) { 
     // Monday 
     Day day1 = days.get(0); 
     etNasteMonday.setText(String.valueOf(day1.getNaste())); 
     etInsulinMondayBeforeBreak.setText(String.valueOf(day1.getInsulinBeforeBreak())); 
     etDiabetesMondayAfterBreak.setText(String.valueOf(day1.getDiabetesAfterBreak())); 
     etDiabetesMondayBeforeLaunch.setText(String.valueOf(day1.getDiabetesBeforeLaunch())); 
     etInsulinMondayBeforeLaunch.setText(String.valueOf(day1.getInsulinBeforeLaunch())); 
     etDiabetesMondayAfterLaunch.setText(String.valueOf(day1.getDiabetesAfterLaunch())); 
     etDiabetesMondayBeforeDinner.setText(String.valueOf(day1.getDiabetesBeforeDinner())); 
     etInsulinMondayBeforeDinner.setText(String.valueOf(day1.getInsulinBeforeDinner())); 
     etDiabetesMondayAfterDinner.setText(String.valueOf(day1.getDiabetesAfterDinner())); 
     etDiabetesMondayBeforeSleep.setText(String.valueOf(day1.getDiabetesBeforeSleep())); 
     etInsulinMondayAfterSleep.setText(String.valueOf(day1.getInsulinBeforeSleep())); 
     // Tuesday 
     Day day2 = days.get(1); 
     etNasteUtorak.setText(String.valueOf(day2.getNaste())); 
     etInsulinUtorakPreDorucka.setText(String.valueOf(day2.getInsulinBeforeBreak())); 
     etDiabetesUtorakPosleDorucka.setText(String.valueOf(day2.getDiabetesAfterBreak())); 
     etDiabetesUtorakPreRucka.setText(String.valueOf(day2.getDiabetesBeforeLaunch())); 
     etInsulinUtorakPreRucka.setText(String.valueOf(day2.getInsulinBeforeLaunch())); 
     etDiabetesUtorakPosleRucka.setText(String.valueOf(day2.getDiabetesAfterLaunch())); 
     etDiabetesUtorakPreVecere.setText(String.valueOf(day2.getDiabetesBeforeDinner())); 
     etInsulinUtorakPreVecere.setText(String.valueOf(day2.getInsulinBeforeDinner())); 
     etDiabetesUtorakPosleVecere.setText(String.valueOf(day2.getDiabetesAfterDinner())); 
     etDiabetesUtorakPredSpavanje.setText(String.valueOf(day2.getDiabetesBeforeSleep())); 
     etInsulinUtorakPredSpavanje.setText(String.valueOf(day2.getInsulinBeforeSleep())); 
    } 

私は読むことと、このコード内で実装する方法のプログラムのために、これは、より効率的かつ容易にするために何をすべき:

List<String> values = new ArrayList<>(); 
int[] ids = new int[]{R.id.et_naste_monday, R.id.et_insulin_monday_before_breakf, R.id.et_posle_dorucka_monday, R.id.et_pre_rucka_moday, 
    R.id.et_insulin_monday_pre_rucka, R.id.et_posle_rucka_monday, R.id.et_pre_vecere_moday, R.id.et_insulin_monday_pre_vecere, R.id.et_posle_vecere_monday, 
    R.id.et_pred_spavanje_moday, R.id.et_insulin_monday_pred_spavanje}; 
List<Day> days = mDatabase.getAllDaysByWeek(week.getTitle()); 

for (int id : ids) { 
     EditText t = (EditText) findViewById(id); 
     values.add(t.getText().toString()); 
     t.addTextChangedListener(this); 
     applyChangedEditTextColor(false, values, t); 
     for (Day day : days) { 
      // Here i should do the same part as i done it in above example 
     } 
    } 

答えて

0

カスタムビューを作成します。これらすべてのedittextを使用して、これらのsetTextをすべて埋めるメソッドPopulate(Day day)を設定します。 https://developer.android.com/training/custom-views/index.html https://www.toptal.com/android/android-customization-how-to-build-a-ui-component-that-does-what-you-want

+0

は、私は私がすべての個々のEditTextにテキストを設定するよどこの上に書かれているその方法のすべてで書く必要があります。そして、あなたはカスタムビューについて

mondayView.populate(day.get(0)); tuesdayView.populate(day.get(1)); 

詳細情報を行うことができますか? –

+0

はい、1日だけすべてのsettextを書く必要がありますが、1日だけです。 – JesusS

+0

しかし、私はforループを使ってすべてのEditTextを初期化していますが、ループのためにはedittextのビューが1つしかありません。 –

関連する問題