好的,我有一个包含大量列和行的表,我需要从SQLite数据库中填充其中的每个TextView。这就是我现在正在做的事情(在你看之前深吸一口气,这是你见过的最糟糕的代码之一):
populateUrnik("Ponedeljek", 1, razred, pon1, pon1u);
populateUrnik("Torek", 1, razred, tor1, tor1u);
populateUrnik("Sreda", 1, razred, sre1, sre1u);
populateUrnik("Četrtek", 1, razred, cet1, cet1u);
populateUrnik("Petek", 1, razred, pet1, pet1u);
populateUrnik("Ponedeljek", 2, razred, pon2, pon2u);
populateUrnik("Torek", 2, razred, tor2, tor2u);
populateUrnik("Sreda", 2, razred, sre2, sre2u);
populateUrnik("Četrtek", 2, razred, cet2, cet2u);
populateUrnik("Petek", 2, razred, pet2, pet2u);
populateUrnik("Ponedeljek", 3, razred, pon3, pon3u);
populateUrnik("Torek", 3, razred, tor3, tor3u);
populateUrnik("Sreda", 3, razred, sre3, sre3u);
populateUrnik("Četrtek", 3, razred, cet3, cet3u);
populateUrnik("Petek", 3, razred, pet3, pet3u);
populateUrnik("Ponedeljek", 4, razred, pon4, pon4u);
populateUrnik("Torek", 4, razred, tor4, tor4u);
populateUrnik("Sreda", 4, razred, sre4, sre4u);
populateUrnik("Četrtek", 4, razred, cet4, cet4u);
populateUrnik("Petek", 4, razred, pet4, pet4u);
populateUrnik("Ponedeljek", 5, razred, pon5, pon5u);
populateUrnik("Torek", 5, razred, tor5, tor5u);
populateUrnik("Sreda", 5, razred, sre5, sre5u);
populateUrnik("Četrtek", 5, razred, cet5, cet5u);
populateUrnik("Petek", 5, razred, pet5, pet5u);
populateUrnik("Ponedeljek", 6, razred, pon6, pon6u);
populateUrnik("Torek", 6, razred, tor6, tor6u);
populateUrnik("Sreda", 6, razred, sre6, sre6u);
populateUrnik("Četrtek", 6, razred, cet6, cet6u);
populateUrnik("Petek", 6, razred, pet6, pet6u);
populateUrnik("Ponedeljek", 7, razred, pon7, pon7u);
populateUrnik("Torek", 7, razred, tor7, tor7u);
populateUrnik("Sreda", 7, razred, sre7, sre7u);
populateUrnik("Četrtek", 7, razred, cet7, cet7u);
populateUrnik("Petek", 7, razred, pet7, pet7u);
populateUrnik("Ponedeljek", 8, razred, pon8, pon8u);
populateUrnik("Torek", 8, razred, tor8, tor8u);
populateUrnik("Sreda", 8, razred, sre8, sre8u);
populateUrnik("Četrtek", 8, razred, cet8, cet8u);
populateUrnik("Petek", 8, razred, pet8, pet8u);
populateUrnik("Ponedeljek", 9, razred, pon9, pon9u);
populateUrnik("Torek", 9, razred, tor9, tor9u);
populateUrnik("Sreda", 9, razred, sre9, sre9u);
populateUrnik("Četrtek", 9, razred, cet9, cet9u);
populateUrnik("Petek", 9, razred, pet9, pet9u);
populateUrnik("Ponedeljek", 10, razred, pon10, pon10u);
populateUrnik("Torek", 10, razred, tor10, tor10u);
populateUrnik("Sreda", 10, razred, sre10, sre10u);
populateUrnik("Četrtek", 10, razred, cet10, cet10u);
populateUrnik("Petek", 10, razred, pet10, pet10u);
populateUrnik("Ponedeljek", 11, razred, pon11, pon11u);
populateUrnik("Torek", 11, razred, tor11, tor11u);
populateUrnik("Sreda", 11, razred, sre11, sre11u);
populateUrnik("Četrtek", 11, razred, cet11, cet11u);
populateUrnik("Petek", 11, razred, pet11, pet11u);
所以你可以看到我在调用这些函数时只改变了3个东西:1-11中的数字和两个textview变量pon1,pon1u等(textviews)
有没有办法制作一个for循环,它会改变调用dyinamiaclly的变量?也许是这样的:
for (int i = 1; i <= 11; i++){
populateUrnik("Ponedeljek", i, razred, pon(i), pon(i)u);
}
我知道上面的语法是不可能的,但我只是想证明我想要实现的目标。
非常欢迎任何有关如何改进此长码和坏码的建议!
答案 0 :(得分:0)
我会考虑将代码重新设计为与此类似的代码:
static class Razred {}
static class DayDef {}
static class Pon extends DayDef {}
static class Tor extends DayDef {}
static class Sre extends DayDef {}
static class Cet extends DayDef {}
static class Pet extends DayDef {}
static class DayDefU {}
static class PonU extends DayDefU {}
static class TorU extends DayDefU {}
static class SreU extends DayDefU {}
static class CetU extends DayDefU {}
static class PetU extends DayDefU {}
static class Urnik {
private String string;
private int i;
private Razred razred;
private DayDef dayDef;
private DayDefU dayDefU;
public Urnik(String string, int i, Razred razred, DayDef dayDef,
DayDefU dayDefU) {
this.string = string;
this.i = i;
this.razred = razred;
this.dayDef = dayDef;
this.dayDefU = dayDefU;
}
// getters and setters for every field
}
public static void main(String[] args) {
Razred razred = new Razred();
List<Urnik> urniks = new ArrayList<Urnik> ();
for (int i = 0; i < 11; i++){
urniks.add(new Urnik("Ponedeljek", i+1, razred, new Pon(), new PonU()));
urniks.add(new Urnik("Torek", i+1, razred, new Tor(), new TorU()));
urniks.add(new Urnik("Sreda", i+1, razred, new Sre(), new SreU()));
urniks.add(new Urnik("Četrtek", i+1, razred, new Cet(), new CetU()));
urniks.add(new Urnik("Petek", i+1, razred, new Pet(), new PetU()));
}
}
但是,如果不能这样做,我建议反思为@ dinesh707提议。