2014-01-24 3 views
0

Итак, у меня есть таблица с большим количеством столбцов и строк, и мне нужно заполнить каждый текстовый файл внутри него из базы данных SQLite. Это, как я сейчас делаю это (сделайте глубокий вдох, прежде чем LookAt его, это один из самых страшных кодов вы будете когда-либо видеть):Динамически меняйте эту переменную для вызова

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

Использование отражения. http://docs.oracle.com/javase/tutorial/reflect/ – dinesh707

ответ

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 предложил.

Смежные вопросы