Насколько я понимаю, вы хотите использовать эту переменную v
снова позже.Если это так, вы можете взять необходимый код и поместить его в метод.Таким образом, вы можете объявить переменную в listener
, что даст ей final
, которую она ищет.
Вот так:
switchExam.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
StringBuilder upcoming = new StringBuilder("Upcoming\n\n");
StringBuilder Results = new StringBuilder("Results\n\n");
float v= 0;
if(!isChecked)
{
for(FAssessment a : assessmentList) {
if(!a.getType().equals("Final"))
{
double d = CalculatePercentage(a.getTotal(),a.getAchieved(),Double.parseDouble(a.getWeight()));
v += (float) d;
}
upcoming.append(a.getDesc()+" "+a.getDate()+"\n");
Results.append(a.getDesc()+" "+format.format(((a.getAchieved()/a.getTotal())*100))+"%\n");
}
SetInit(v,upcoming,Results);
}
else
{
for(FAssessment a : assessmentList) {
double d = CalculatePercentage(a.getTotal(),a.getAchieved(),Double.parseDouble(a.getWeight()));
v += (float) d;
upcoming.append(a.getDesc()+" "+a.getDate()+"\n");
Results.append(a.getDesc()+" "+format.format(((a.getAchieved()/a.getTotal())*100))+"%\n");
}
SetInit(v,upcoming,Results);
}
}
});
switchExam.setChecked(true);
Затем в вашем методе вывставит то, что вы хотите сделать с вашей переменной v
:
private void SetInit(float v, StringBuilder coming, StringBuilder results) {
txtUpcoming.setText(coming);
txtResults.setText(results);
//And whatever you want to do with `v`
}
Надеюсь, это поможет.:)