0

Je suis en train de faire quelques changements de code dans le développement Android pour rendre mon codage plus précis. J'ai 7 TextViews dans ma mise en page pour tous les jours de la semaine, j'ai fait trouver la vue par ID pour tous ces TextViews.Problème d'optimisation de code

L'exigence est que seulement un TextView doit rester sélectionné à un moment où l'utilisateur clique sur quelqu'un parmi ces 7 TextViews.

, j'ai un code répété comme ci-dessous, check it out:

case R.id.txt_sunday: 
      if (Prefrences.getBooleanValue(mContext, D_SUN)) { 
       doUnSelect(D_SUN, mTxtSunday); 
      } else { 
       Prefrences.setBooleanValue(mContext, HH_FILTER, true); 
       selectedDay = "0"; 
       Prefrences.setBooleanValue(mContext, D_SUN, true); 
       Prefrences.setBooleanValue(mContext, D_MON, false); 
       Prefrences.setBooleanValue(mContext, D_TUE, false); 
       Prefrences.setBooleanValue(mContext, D_WED, false); 
       Prefrences.setBooleanValue(mContext, D_THR, false); 
       Prefrences.setBooleanValue(mContext, D_FRI, false); 
       Prefrences.setBooleanValue(mContext, D_SAT, false); 
       mTxtSunday.setBackgroundResource(R.color.colorAppDefault); 
       mTxtSunday.setTextColor(getResources().getColor(R.color.white)); 
       mTxtMonday.setBackgroundResource(R.color.white); 
       mTxtMonday.setTextColor(getResources().getColor(R.color.black)); 
       mTxtTuesday.setBackgroundResource(R.color.white); 
       mTxtTuesday.setTextColor(getResources().getColor(R.color.black)); 
       mTxtWednesday.setBackgroundResource(R.color.white); 
       mTxtWednesday.setTextColor(getResources().getColor(R.color.black)); 
       mTxtThrusday.setBackgroundResource(R.color.white); 
       mTxtThrusday.setTextColor(getResources().getColor(R.color.black)); 
       mTxtFriday.setBackgroundResource(R.color.white); 
       mTxtFriday.setTextColor(getResources().getColor(R.color.black)); 
       mTxtSaturday.setBackgroundResource(R.color.white); 
       mTxtSaturday.setTextColor(getResources().getColor(R.color.black)); 
      } 
      break; 

Comme vous pouvez le voir dans code ci-dessus .. j'ai pris un cas de commutation pour la manipulation clic de tous mes sept TextViews, ci-dessus est pour DIMANCHE. Alors maintenant, vous pourriez avoir l'idée que j'ai fait de même pour les jours restants du lundi au samedi. correct.

Maintenant, je dois optimiser ma partie else car j'ai optimisé ma partie if dans le code ci-dessus.

Comment?

Merci d'avance.

+0

Qu'est-ce que 'mTxtSunday' dans votre code, bouton, textview? –

+0

ya, en fait son TextView .. Mais, ce n'est pas grave. le concept est le même pour le bouton et le textview. sry pour mon erreur. Considérez-le comme TextView. –

+0

Et ce qui est 'D_SUN' est-il' int', 'String' quelque chose? –

Répondre

0

Vous devez créer une classe:

WeekDay

public class WeekDay { 

final String key; 
final TextView textView; 
final Context context; 

public WeekDay(Context context, String key, TextView textView) { 
    this.key = key; 
    this.textView = textView; 
    this.context = context; 
} 

public void select() { 
    textView.setTextColor(context.getResources().getColor(R.color.black)); 
    textView.setBackgroundResource(R.color.black); 
    Prefrences.setBooleanValue(context, key, true); 

} 


public void unSelect() { 
    textView.setTextColor(context.getResources().getColor(R.color.white)); 
    textView.setBackgroundResource(R.color.colorAppDefault); 
    Prefrences.setBooleanValue(context, key, false); 
}} 

Ensuite, dans votre classe principale d'initialisation d'un tableau avec le Jours de la semaine

WeekDays[] days=new WeekDays[]{new WeekDay(context,D_SUN,sundeyTxt),new WeekDay(context,D_MON,mondeyTxt),...}

et dans votre autre vous peut appeler:

for(int i=0;i<days.length;i++){ if(i==0)days[i].select();else days[i].unselect();} 

J'espère que vous aurez l'idée ...