Displaying 21 spinners to select body parts
up vote
0
down vote
favorite
I just wanted to ask how can I make my code a bit shorter. As of now, I have way too much code in the class. The program should display about twenty one spinners. I know it's a lot, but in this layout, users have to create their own training plan for 3 training days. In every training day, user has to select up to three body parts (one body part - 3 spinners with exercises, it should look like that)
Monday:
Chest: -first exercise (spinner) -second exercise (spinner) -third exercise (spinner)
Triceps -first exercise (spinner) -second exercise (spinner) -third exercise (spinner) etc..
I've already filled spinners with exercises from database, but I want to make this class shorter because for filling my spinners (just Ctrl+C, Ctrl+V) I've written about 2400 lines of code where about 2000 it's just copied method, with changed adapter etc. Did can i make it shorter? Here's first method
public void setMondayFirstBodyPart_1() {
switch (mondayFirstBodyPartFirstExerciseString) {
case "shoulders": {
List<String> data = db.getShouldersData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Shoulders");
break;
}
case "chest": {
List<String> data = db.getChestData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Chest");
break;
}
case "back": {
List<String> data = db.getBackData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Back");
break;
}
case "biceps": {
List<String> data = db.getBicepsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Biceps");
break;
}
case "triceps": {
List<String> data = db.getTricepsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Triceps");
break;
}
case "forearm": {
List<String> data = db.getForearmData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Forearm");
break;
}
case "stomach": {
List<String> data = db.getAbsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Stomach");
break;
}
case "legs": {
List<String> data = db.getLegsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Legs");
break;
}
case "calf": {
List<String> data = db.getCalfData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Calf");
break;
}
}
}
java android sqlite
bumped to the homepage by Community♦ 15 hours ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
up vote
0
down vote
favorite
I just wanted to ask how can I make my code a bit shorter. As of now, I have way too much code in the class. The program should display about twenty one spinners. I know it's a lot, but in this layout, users have to create their own training plan for 3 training days. In every training day, user has to select up to three body parts (one body part - 3 spinners with exercises, it should look like that)
Monday:
Chest: -first exercise (spinner) -second exercise (spinner) -third exercise (spinner)
Triceps -first exercise (spinner) -second exercise (spinner) -third exercise (spinner) etc..
I've already filled spinners with exercises from database, but I want to make this class shorter because for filling my spinners (just Ctrl+C, Ctrl+V) I've written about 2400 lines of code where about 2000 it's just copied method, with changed adapter etc. Did can i make it shorter? Here's first method
public void setMondayFirstBodyPart_1() {
switch (mondayFirstBodyPartFirstExerciseString) {
case "shoulders": {
List<String> data = db.getShouldersData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Shoulders");
break;
}
case "chest": {
List<String> data = db.getChestData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Chest");
break;
}
case "back": {
List<String> data = db.getBackData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Back");
break;
}
case "biceps": {
List<String> data = db.getBicepsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Biceps");
break;
}
case "triceps": {
List<String> data = db.getTricepsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Triceps");
break;
}
case "forearm": {
List<String> data = db.getForearmData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Forearm");
break;
}
case "stomach": {
List<String> data = db.getAbsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Stomach");
break;
}
case "legs": {
List<String> data = db.getLegsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Legs");
break;
}
case "calf": {
List<String> data = db.getCalfData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Calf");
break;
}
}
}
java android sqlite
bumped to the homepage by Community♦ 15 hours ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
Welcome to Code Review. I suggest that you show more context, so that we can advise you properly. For example, what does thedb
code look like? See How to Ask.
– 200_success
Nov 10 at 21:27
Every case statement is the same except the setText parameter. So just extract the whole duplicated case statement in new method with just one parameter.
– Ankit Soni
Nov 10 at 21:29
@Ankit Soni - theList<String> data
also gets different values depending on the case.
– 0X0nosugar
Nov 10 at 21:35
@0X0nosugar, you are right, my bad. Two parameters then, the db data list and text value.
– Ankit Soni
Nov 10 at 21:39
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I just wanted to ask how can I make my code a bit shorter. As of now, I have way too much code in the class. The program should display about twenty one spinners. I know it's a lot, but in this layout, users have to create their own training plan for 3 training days. In every training day, user has to select up to three body parts (one body part - 3 spinners with exercises, it should look like that)
Monday:
Chest: -first exercise (spinner) -second exercise (spinner) -third exercise (spinner)
Triceps -first exercise (spinner) -second exercise (spinner) -third exercise (spinner) etc..
I've already filled spinners with exercises from database, but I want to make this class shorter because for filling my spinners (just Ctrl+C, Ctrl+V) I've written about 2400 lines of code where about 2000 it's just copied method, with changed adapter etc. Did can i make it shorter? Here's first method
public void setMondayFirstBodyPart_1() {
switch (mondayFirstBodyPartFirstExerciseString) {
case "shoulders": {
List<String> data = db.getShouldersData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Shoulders");
break;
}
case "chest": {
List<String> data = db.getChestData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Chest");
break;
}
case "back": {
List<String> data = db.getBackData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Back");
break;
}
case "biceps": {
List<String> data = db.getBicepsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Biceps");
break;
}
case "triceps": {
List<String> data = db.getTricepsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Triceps");
break;
}
case "forearm": {
List<String> data = db.getForearmData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Forearm");
break;
}
case "stomach": {
List<String> data = db.getAbsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Stomach");
break;
}
case "legs": {
List<String> data = db.getLegsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Legs");
break;
}
case "calf": {
List<String> data = db.getCalfData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Calf");
break;
}
}
}
java android sqlite
I just wanted to ask how can I make my code a bit shorter. As of now, I have way too much code in the class. The program should display about twenty one spinners. I know it's a lot, but in this layout, users have to create their own training plan for 3 training days. In every training day, user has to select up to three body parts (one body part - 3 spinners with exercises, it should look like that)
Monday:
Chest: -first exercise (spinner) -second exercise (spinner) -third exercise (spinner)
Triceps -first exercise (spinner) -second exercise (spinner) -third exercise (spinner) etc..
I've already filled spinners with exercises from database, but I want to make this class shorter because for filling my spinners (just Ctrl+C, Ctrl+V) I've written about 2400 lines of code where about 2000 it's just copied method, with changed adapter etc. Did can i make it shorter? Here's first method
public void setMondayFirstBodyPart_1() {
switch (mondayFirstBodyPartFirstExerciseString) {
case "shoulders": {
List<String> data = db.getShouldersData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Shoulders");
break;
}
case "chest": {
List<String> data = db.getChestData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Chest");
break;
}
case "back": {
List<String> data = db.getBackData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Back");
break;
}
case "biceps": {
List<String> data = db.getBicepsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Biceps");
break;
}
case "triceps": {
List<String> data = db.getTricepsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Triceps");
break;
}
case "forearm": {
List<String> data = db.getForearmData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Forearm");
break;
}
case "stomach": {
List<String> data = db.getAbsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Stomach");
break;
}
case "legs": {
List<String> data = db.getLegsData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Legs");
break;
}
case "calf": {
List<String> data = db.getCalfData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Calf");
break;
}
}
}
java android sqlite
java android sqlite
edited Nov 10 at 23:29
Stephen Rauch
3,76061530
3,76061530
asked Nov 10 at 21:21
user184370
1
1
bumped to the homepage by Community♦ 15 hours ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
bumped to the homepage by Community♦ 15 hours ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
Welcome to Code Review. I suggest that you show more context, so that we can advise you properly. For example, what does thedb
code look like? See How to Ask.
– 200_success
Nov 10 at 21:27
Every case statement is the same except the setText parameter. So just extract the whole duplicated case statement in new method with just one parameter.
– Ankit Soni
Nov 10 at 21:29
@Ankit Soni - theList<String> data
also gets different values depending on the case.
– 0X0nosugar
Nov 10 at 21:35
@0X0nosugar, you are right, my bad. Two parameters then, the db data list and text value.
– Ankit Soni
Nov 10 at 21:39
add a comment |
Welcome to Code Review. I suggest that you show more context, so that we can advise you properly. For example, what does thedb
code look like? See How to Ask.
– 200_success
Nov 10 at 21:27
Every case statement is the same except the setText parameter. So just extract the whole duplicated case statement in new method with just one parameter.
– Ankit Soni
Nov 10 at 21:29
@Ankit Soni - theList<String> data
also gets different values depending on the case.
– 0X0nosugar
Nov 10 at 21:35
@0X0nosugar, you are right, my bad. Two parameters then, the db data list and text value.
– Ankit Soni
Nov 10 at 21:39
Welcome to Code Review. I suggest that you show more context, so that we can advise you properly. For example, what does the
db
code look like? See How to Ask.– 200_success
Nov 10 at 21:27
Welcome to Code Review. I suggest that you show more context, so that we can advise you properly. For example, what does the
db
code look like? See How to Ask.– 200_success
Nov 10 at 21:27
Every case statement is the same except the setText parameter. So just extract the whole duplicated case statement in new method with just one parameter.
– Ankit Soni
Nov 10 at 21:29
Every case statement is the same except the setText parameter. So just extract the whole duplicated case statement in new method with just one parameter.
– Ankit Soni
Nov 10 at 21:29
@Ankit Soni - the
List<String> data
also gets different values depending on the case.– 0X0nosugar
Nov 10 at 21:35
@Ankit Soni - the
List<String> data
also gets different values depending on the case.– 0X0nosugar
Nov 10 at 21:35
@0X0nosugar, you are right, my bad. Two parameters then, the db data list and text value.
– Ankit Soni
Nov 10 at 21:39
@0X0nosugar, you are right, my bad. Two parameters then, the db data list and text value.
– Ankit Soni
Nov 10 at 21:39
add a comment |
2 Answers
2
active
oldest
votes
up vote
0
down vote
I don't know of what type mondayFirstBodyPartFirstExercise
currently is but maybe you could use polymorphism and add the behavior there. This would would put database logic into your entities though. (Active Record pattern)
public void setMondayFirstBodyPart_1() {
List<String> data = mondayFirstBodyPartFirstExercise.getData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText(mondayFirstBodyPartFirstExercise.getBodyPartName());
}
add a comment |
up vote
0
down vote
Let's take a look at one of the case
blocks:
case "shoulders": {
List<String> data = db.getShouldersData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Shoulders");
break;
}
The only lines which depend directly on the selected body part are
List<String> data = db.getShouldersData();
and
mondayFirstBodyPartExerciseTV.setText("Shoulders");
So let's suppose you have a method findDataForBodyPart(String bodyPart)
which will make the database call and return the data list (or an empty list if there is no data to be found). In addition to that, you need another method getNameOfBodyPart(String)
which will take a String
(e.g. "shoulders") and return the desired TextView
text (e.g. "Shoulders").
Then you can abbreviate your code as follows:
public void setMondayFirstBodyPart_1() {
List<String> data = findDataForBodyPart(mondayFirstBodyPartFirstExerciseString);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText(getNameOfBodyPart(mondayFirstBodyPartFirstExerciseString));
}
You can avoid even more repetitions (this time of whole methods) if you pass the value of mondayFirstBodyPartFirstExerciseString as parameter into the method, together with the corresponding Spinner
and TextView
:
public void setExerciseFor(String bodyPartString, Spinner exerciseSpinner, TextView exerciseTextView) {
List<String> data = findDataForBodyPart(bodyPartString);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
exerciseSpinner.setAdapter(adapter);
exerciseTextView.setText(getNameOfBodyPart(bodyPartString));
}
Please note that in order to suggest further improvements, we'd need to see more of your code.
When adding additional information you should edit your answer instead of adding a comment. I have added that information to your post. Learn more about comments including when to comment and when not to in the Help Center page about Comments.
– Sᴀᴍ Onᴇᴌᴀ
Nov 11 at 11:06
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
I don't know of what type mondayFirstBodyPartFirstExercise
currently is but maybe you could use polymorphism and add the behavior there. This would would put database logic into your entities though. (Active Record pattern)
public void setMondayFirstBodyPart_1() {
List<String> data = mondayFirstBodyPartFirstExercise.getData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText(mondayFirstBodyPartFirstExercise.getBodyPartName());
}
add a comment |
up vote
0
down vote
I don't know of what type mondayFirstBodyPartFirstExercise
currently is but maybe you could use polymorphism and add the behavior there. This would would put database logic into your entities though. (Active Record pattern)
public void setMondayFirstBodyPart_1() {
List<String> data = mondayFirstBodyPartFirstExercise.getData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText(mondayFirstBodyPartFirstExercise.getBodyPartName());
}
add a comment |
up vote
0
down vote
up vote
0
down vote
I don't know of what type mondayFirstBodyPartFirstExercise
currently is but maybe you could use polymorphism and add the behavior there. This would would put database logic into your entities though. (Active Record pattern)
public void setMondayFirstBodyPart_1() {
List<String> data = mondayFirstBodyPartFirstExercise.getData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText(mondayFirstBodyPartFirstExercise.getBodyPartName());
}
I don't know of what type mondayFirstBodyPartFirstExercise
currently is but maybe you could use polymorphism and add the behavior there. This would would put database logic into your entities though. (Active Record pattern)
public void setMondayFirstBodyPart_1() {
List<String> data = mondayFirstBodyPartFirstExercise.getData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText(mondayFirstBodyPartFirstExercise.getBodyPartName());
}
answered Nov 11 at 1:26
fap
1615
1615
add a comment |
add a comment |
up vote
0
down vote
Let's take a look at one of the case
blocks:
case "shoulders": {
List<String> data = db.getShouldersData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Shoulders");
break;
}
The only lines which depend directly on the selected body part are
List<String> data = db.getShouldersData();
and
mondayFirstBodyPartExerciseTV.setText("Shoulders");
So let's suppose you have a method findDataForBodyPart(String bodyPart)
which will make the database call and return the data list (or an empty list if there is no data to be found). In addition to that, you need another method getNameOfBodyPart(String)
which will take a String
(e.g. "shoulders") and return the desired TextView
text (e.g. "Shoulders").
Then you can abbreviate your code as follows:
public void setMondayFirstBodyPart_1() {
List<String> data = findDataForBodyPart(mondayFirstBodyPartFirstExerciseString);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText(getNameOfBodyPart(mondayFirstBodyPartFirstExerciseString));
}
You can avoid even more repetitions (this time of whole methods) if you pass the value of mondayFirstBodyPartFirstExerciseString as parameter into the method, together with the corresponding Spinner
and TextView
:
public void setExerciseFor(String bodyPartString, Spinner exerciseSpinner, TextView exerciseTextView) {
List<String> data = findDataForBodyPart(bodyPartString);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
exerciseSpinner.setAdapter(adapter);
exerciseTextView.setText(getNameOfBodyPart(bodyPartString));
}
Please note that in order to suggest further improvements, we'd need to see more of your code.
When adding additional information you should edit your answer instead of adding a comment. I have added that information to your post. Learn more about comments including when to comment and when not to in the Help Center page about Comments.
– Sᴀᴍ Onᴇᴌᴀ
Nov 11 at 11:06
add a comment |
up vote
0
down vote
Let's take a look at one of the case
blocks:
case "shoulders": {
List<String> data = db.getShouldersData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Shoulders");
break;
}
The only lines which depend directly on the selected body part are
List<String> data = db.getShouldersData();
and
mondayFirstBodyPartExerciseTV.setText("Shoulders");
So let's suppose you have a method findDataForBodyPart(String bodyPart)
which will make the database call and return the data list (or an empty list if there is no data to be found). In addition to that, you need another method getNameOfBodyPart(String)
which will take a String
(e.g. "shoulders") and return the desired TextView
text (e.g. "Shoulders").
Then you can abbreviate your code as follows:
public void setMondayFirstBodyPart_1() {
List<String> data = findDataForBodyPart(mondayFirstBodyPartFirstExerciseString);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText(getNameOfBodyPart(mondayFirstBodyPartFirstExerciseString));
}
You can avoid even more repetitions (this time of whole methods) if you pass the value of mondayFirstBodyPartFirstExerciseString as parameter into the method, together with the corresponding Spinner
and TextView
:
public void setExerciseFor(String bodyPartString, Spinner exerciseSpinner, TextView exerciseTextView) {
List<String> data = findDataForBodyPart(bodyPartString);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
exerciseSpinner.setAdapter(adapter);
exerciseTextView.setText(getNameOfBodyPart(bodyPartString));
}
Please note that in order to suggest further improvements, we'd need to see more of your code.
When adding additional information you should edit your answer instead of adding a comment. I have added that information to your post. Learn more about comments including when to comment and when not to in the Help Center page about Comments.
– Sᴀᴍ Onᴇᴌᴀ
Nov 11 at 11:06
add a comment |
up vote
0
down vote
up vote
0
down vote
Let's take a look at one of the case
blocks:
case "shoulders": {
List<String> data = db.getShouldersData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Shoulders");
break;
}
The only lines which depend directly on the selected body part are
List<String> data = db.getShouldersData();
and
mondayFirstBodyPartExerciseTV.setText("Shoulders");
So let's suppose you have a method findDataForBodyPart(String bodyPart)
which will make the database call and return the data list (or an empty list if there is no data to be found). In addition to that, you need another method getNameOfBodyPart(String)
which will take a String
(e.g. "shoulders") and return the desired TextView
text (e.g. "Shoulders").
Then you can abbreviate your code as follows:
public void setMondayFirstBodyPart_1() {
List<String> data = findDataForBodyPart(mondayFirstBodyPartFirstExerciseString);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText(getNameOfBodyPart(mondayFirstBodyPartFirstExerciseString));
}
You can avoid even more repetitions (this time of whole methods) if you pass the value of mondayFirstBodyPartFirstExerciseString as parameter into the method, together with the corresponding Spinner
and TextView
:
public void setExerciseFor(String bodyPartString, Spinner exerciseSpinner, TextView exerciseTextView) {
List<String> data = findDataForBodyPart(bodyPartString);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
exerciseSpinner.setAdapter(adapter);
exerciseTextView.setText(getNameOfBodyPart(bodyPartString));
}
Please note that in order to suggest further improvements, we'd need to see more of your code.
Let's take a look at one of the case
blocks:
case "shoulders": {
List<String> data = db.getShouldersData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText("Shoulders");
break;
}
The only lines which depend directly on the selected body part are
List<String> data = db.getShouldersData();
and
mondayFirstBodyPartExerciseTV.setText("Shoulders");
So let's suppose you have a method findDataForBodyPart(String bodyPart)
which will make the database call and return the data list (or an empty list if there is no data to be found). In addition to that, you need another method getNameOfBodyPart(String)
which will take a String
(e.g. "shoulders") and return the desired TextView
text (e.g. "Shoulders").
Then you can abbreviate your code as follows:
public void setMondayFirstBodyPart_1() {
List<String> data = findDataForBodyPart(mondayFirstBodyPartFirstExerciseString);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mondayFirstBodyPartFirstExercise.setAdapter(adapter);
mondayFirstBodyPartExerciseTV.setText(getNameOfBodyPart(mondayFirstBodyPartFirstExerciseString));
}
You can avoid even more repetitions (this time of whole methods) if you pass the value of mondayFirstBodyPartFirstExerciseString as parameter into the method, together with the corresponding Spinner
and TextView
:
public void setExerciseFor(String bodyPartString, Spinner exerciseSpinner, TextView exerciseTextView) {
List<String> data = findDataForBodyPart(bodyPartString);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
exerciseSpinner.setAdapter(adapter);
exerciseTextView.setText(getNameOfBodyPart(bodyPartString));
}
Please note that in order to suggest further improvements, we'd need to see more of your code.
edited Nov 11 at 11:04
Sᴀᴍ Onᴇᴌᴀ
8,09961751
8,09961751
answered Nov 10 at 22:15
0X0nosugar
1214
1214
When adding additional information you should edit your answer instead of adding a comment. I have added that information to your post. Learn more about comments including when to comment and when not to in the Help Center page about Comments.
– Sᴀᴍ Onᴇᴌᴀ
Nov 11 at 11:06
add a comment |
When adding additional information you should edit your answer instead of adding a comment. I have added that information to your post. Learn more about comments including when to comment and when not to in the Help Center page about Comments.
– Sᴀᴍ Onᴇᴌᴀ
Nov 11 at 11:06
When adding additional information you should edit your answer instead of adding a comment. I have added that information to your post. Learn more about comments including when to comment and when not to in the Help Center page about Comments.
– Sᴀᴍ Onᴇᴌᴀ
Nov 11 at 11:06
When adding additional information you should edit your answer instead of adding a comment. I have added that information to your post. Learn more about comments including when to comment and when not to in the Help Center page about Comments.
– Sᴀᴍ Onᴇᴌᴀ
Nov 11 at 11:06
add a comment |
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f207388%2fdisplaying-21-spinners-to-select-body-parts%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Welcome to Code Review. I suggest that you show more context, so that we can advise you properly. For example, what does the
db
code look like? See How to Ask.– 200_success
Nov 10 at 21:27
Every case statement is the same except the setText parameter. So just extract the whole duplicated case statement in new method with just one parameter.
– Ankit Soni
Nov 10 at 21:29
@Ankit Soni - the
List<String> data
also gets different values depending on the case.– 0X0nosugar
Nov 10 at 21:35
@0X0nosugar, you are right, my bad. Two parameters then, the db data list and text value.
– Ankit Soni
Nov 10 at 21:39