J'utilise un Tablelayout et j'ajoute 5 lignes de manière pragmatique. Chaque ligne a 4 colonnes, description Textview à pos 0, 2 edittext tentative & fait des vues à la pos 1 et 2 et enfin un TextView pct à pos 3. Quand un utilisateur fournit une entrée dans la tentative de texte d'édition et fait, seulement alors je veux pour calculer madeET/essayerET * 100 et setText
dans le PCT textview.Mise à jour de TextView après la saisie des données dans les champs edittext 1 et 2
Voici le code actuel jusqu'à présent. Le résultat souhaité ne se produit que sur l'entrée finale sur la ligne 6. J'ai essayé addTextChangedListener
sur madeET
ainsi que setOnFocusChangeListener
private void setTableRows(){
String[] desc = new String[]{"Flat level putts","Uphill putts","Downhill putts","Left-to-right putts","Right-to-left putts"};
int totalputts = 0;
for (int i=0;i<desc.length;i++){
TableRow tr = new TableRow(this);
TextView descTV = new TextView(this);
descTV.setText(desc[i]);
descTV.setTag(i);
descTV.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
descTV.setPadding(5, 0, 0, 0);
tr.addView(descTV);
final TextView pctMade = new TextView(this);
pctMade.setGravity(Gravity.CENTER);
pctMade.setTag("pct"+i);
//pctMade.setText(String.valueOf(pctmadecalc));
pctMade.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
pctMade.setPadding(5, 0, 0, 0);
final EditText madeET = new EditText(this);
madeET.setInputType(InputType.TYPE_CLASS_NUMBER);
madeET.setTag("m"+i);
madeET.setFilters(new InputFilter[]{new GolfAppUtils.InputFilterMinMax("0","10")});
madeET.setGravity(Gravity.CENTER);
madeET.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
madeET.setPadding(5, 0, 0, 0);
final int finalI = i;
madeET.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
/*if(s.length() > 0){
double pctmadecalc = Integer.parseInt(s.toString())/PUTTS_PER_CATEGORY;
}*/
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
pctMade.setText(null);
}
@Override
public void afterTextChanged(Editable s) {
if(s.length() > 0) {
//calcPct(finalI);
//float pctmadecalc = (((float)(Integer.parseInt(s.toString())))/((float) PUTTS_PER_CATEGORY)) * 100;
/*NumberFormat df = DecimalFormat.getInstance();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(4);
df.setRoundingMode(RoundingMode.DOWN);*/
//Toast.makeText(getBaseContext(), String.valueOf(pctmadecalc), Toast.LENGTH_SHORT).show();
//pctMade.setText(String.valueOf(String.format("%.2f",pctmadecalc)));
}
}
});
madeET.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
calcPct();
}
});
EditText attemptET = new EditText(this);
attemptET.setInputType(InputType.TYPE_CLASS_NUMBER);
attemptET.setTag("a"+i);
attemptET.setFilters(new InputFilter[]{new GolfAppUtils.InputFilterMinMax("0","10")});
attemptET.setGravity(Gravity.CENTER);
attemptET.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
attemptET.setPadding(5, 0, 0, 0);
/*attemptET.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
*//*if(s.length() > 0){
double pctmadecalc = Integer.parseInt(s.toString())/PUTTS_PER_CATEGORY;
}*//*
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
pctMade.setText(null);
}
@Override
public void afterTextChanged(Editable s) {
if(s.length() > 0) {
float pctmadecalc = (((float)(Integer.parseInt(s.toString())))/((float) PUTTS_PER_CATEGORY)) * 100;
*//*NumberFormat df = DecimalFormat.getInstance();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(4);
df.setRoundingMode(RoundingMode.DOWN);*//*
//Toast.makeText(getBaseContext(), String.valueOf(pctmadecalc), Toast.LENGTH_SHORT).show();
pctMade.setText(String.valueOf(String.format("%.2f",pctmadecalc)));
}
}
});*/
tr.addView(attemptET);
tr.addView(madeET);
tr.addView(pctMade);
table.addView(tr);
}
}
private void calcPct() {
EditText attempt = null,made = null;
TextView pct = null;
/*TableRow row = (TableRow) table.getChildAt(pos);
attempt = (EditText) row.findViewWithTag("a" + pos);
made = (EditText) row.findViewWithTag("m" + pos);
pct = (TextView) row.findViewWithTag("pct" + pos);*/
for(int i = 1, j = table.getChildCount(); i < j; i++) { //i=0 is header
TableRow row = (TableRow)table.getChildAt(i);
attempt = (EditText) row.getChildAt(1);
made = (EditText) row.getChildAt(2);
pct = (TextView) row.getChildAt(3);
}
if (!TextUtils.isEmpty(attempt.getText())) {
if (!TextUtils.isEmpty(made.getText())) {
float pctmadecalc = ((float) Integer.parseInt(made.getText().toString())/
((float) Integer.parseInt(attempt.getText().toString()))) * 100;
//Toast.makeText(getBaseContext(), String.valueOf(pctmadecalc), Toast.LENGTH_SHORT).show();
pct.setText(String.valueOf(String.format("%.2f", pctmadecalc)));
}
}
}
Merci d'avance pour votre aide
RÉSOLUTION DE LA RÉPONSE CI-DESSOUS
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 0) {
pctMade.setText("");
float pctmadecalc = ((float) Integer.parseInt(madeET.getText().toString())/
((float) Integer.parseInt(attemptET.getText().toString()))) * 100;
//Toast.makeText(getBaseContext(), String.valueOf(pctmadecalc), Toast.LENGTH_SHORT).show();
pctMade.setText(String.valueOf(String.format("%.2f", pctmadecalc)));
//pctMade.setText(calcPct());
} else {
pctMade.setText("");
}
}
C'était-ce ... 'public void OnTextChanged (CharSequence de, start, int avant, nombre int) {if (s.length()> 0) {pctMade.setText (""); float pctmadecalc = ((flottant) Integer.parseInt (madeET.getText(). toString())/ ((flottant) Entier.parseInt (tentET.getText(). toString()))) * 100; pctMade.setText (String.valueOf (String.format ("%. 2f", pctmadecalc))); //pctMade.setText (calcPct()); } else { pctMade.setText (""); } } ' – archiver