动态更改要调用的变量

时间:2014-01-24 08:58:38

标签: java android variables dynamic

好的,我有一个包含大量列和行的表,我需要从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);
}

我知道上面的语法是不可能的,但我只是想证明我想要实现的目标。

非常欢迎任何有关如何改进此长码和坏码的建议!

1 个答案:

答案 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提议。