2014-09-22 6 views
-1

countDays - метод, который вызывает метод в течение нескольких дней с понедельника по воскресенье. Методы в течение нескольких дней заполняют список для выбранного дня ... Единственное, что меняется в конкретном методе дня, - это номер день, когда пункт ..dan.id = 1-7, 1 указывает на понедельник ... 2 показывает, вторник и т.д ..Retrive from DataBase

private void countDays() { 
    final String[] word = { " " +Monday(), " " + Tuesday(), 
       " " + Wednesday()... }; 
     countDays++; 

     if (countDays >= word.length) { 
     Days = 0; 
     TextView.setText(word[Days]); 
    } 

    else { 
     textView.setText(word[Days]); 
    } 

} 

// Дни Это для понедельника

возможно вместо методы для каждого дня примерно так: String [] dayFromDb = new String [] {"1, 1", "1,2"} --- для понедельника и вторника

private String Monday() { 


    String result =""; 

Cursor namirniceCursor = database 
     .rawQuery(
       "select DANI_TABLE.dani,OBROK_TABLE.naziv_obroka,OBROK_TABLE." 
         + "vrijeme_obroka,MENI_PREHRANA.obrok" 
         + " from MENI_PREHRANA " 
         + " inner join DANI_TABLE on DANI_TABLE._id=MENI_PREHRANA.dan_id " 
         + " inner join OBROK_TABLE on  OBROK_TABLE._id=MENI_PREHRANA.obrok_id" 
         + " where MENI_PREHRANA.jelovnik_id=?" 
         + "and MENI_PREHRANA.dan_id=?", new String[] { 
         "1", "1" } //"1" monday 
         ); 



int dan = namirniceCursor.getColumnIndex("dani"); 
int obrok = namirniceCursor.getColumnIndex("obrok"); 
int nazivObroka = namirniceCursor.getColumnIndex("naziv_obroka"); 
int vrijeme = namirniceCursor.getColumnIndex("vrijeme_obroka"); 

for (namirniceCursor.moveToFirst(); !namirniceCursor.isAfterLast(); namirniceCursor 
     .moveToNext()) { 
    result = result + namirniceCursor.getString(dan) + " \n " 
      + namirniceCursor.getString(vrijeme) + " " 
      + namirniceCursor.getString(nazivObroka) + " " 
      + namirniceCursor.getString(obrok); 
} 

return result; 
} 

Это для вторнике

private String Tuesday() { 
    String[] nam = new String[] { "DANI_TABLE" }; 
    String result = ""; 

    Cursor namirniceCursor = database 
      .rawQuery(
        "select DANI_TABLE.dani,OBROK_TABLE.naziv_obroka,OBROK_TABLE." 
          + "vrijeme_obroka,MENI_PREHRANA.obrok" 
          + " from MENI_PREHRANA " 
          + " inner join DANI_TABLE on DANI_TABLE._id=MENI_PREHRANA.dan_id " 
          + " inner join OBROK_TABLE on OBROK_TABLE._id=MENI_PREHRANA.obrok_id" 
          + " where MENI_PREHRANA.jelovnik_id=?" 
          + "and MENI_PREHRANA.dan_id=?", 
         new String[] {"1", "2" }); // "2" tuesday 



    int dan = namirniceCursor.getColumnIndex("dani"); 
    int obrok = namirniceCursor.getColumnIndex("obrok"); 
    int nazivObroka = namirniceCursor.getColumnIndex("naziv_obroka"); 
    int vrijeme = namirniceCursor.getColumnIndex("vrijeme_obroka"); 

    for (namirniceCursor.moveToFirst(); !namirniceCursor.isAfterLast(); namirniceCursor 
      .moveToNext()) { 
     result = result + namirniceCursor.getString(dan) + " \n " 
       + namirniceCursor.getString(vrijeme) + " " 
       + namirniceCursor.getString(nazivObroka) + " " 
       + namirniceCursor.getString(obrok); 
    } 

    return result; 
} 

Как уменьшить код, потому что единственное, что изменения является новый String [] { «1», «1»} и новый String [] { "1", "2"} и т.д ...

+0

вместо 'Monday()' do 'naDzien (int dzien)', а затем заменить 'new String [] {" 1 "," 1 "}' на 'new String [] {" 1 ", String.valueOf (dzien)} 'затем вызывать' naDzien (1) 'в течение понедельника,' naDzien (2) 'for tuesday ... fx в цикле' for (int i = 1; i <7; i ++) {result + = naDzien (я); } ' – Selvin

+0

Можете ли вы показать, как реализовать свой код в моем примере, потому что я не совсем понял ... я новичок в программировании на Android ... Thnk вы заранее –

ответ

0

вы можете попробовать этот способ, дайте мне знать, если это работает,

Инициализировать массив строк,

String variableDay = "1"; // Default value "1" 

    String[] mStringArray = new String[2]; 
    mStringArray[0] = "1"; 
    mStringArray[2] = variableDay; 

и изменить значения и передать,

variableDay = "2"; 
    mStringArray[2] = variableDay; 

    .rawQuery(....., mStringArray); 

New Edit:

Замените эту строку,

final String[] word = { " " + getResult(1), " " + getResult(2), 
     " " + getResult(3), " " + getResult(4), " " + getResult(5), 
     " " + getResult(6), " " + getResult(7)}; 

И использовать этот общий метод,

private String getResult(int dayId) { 

    String result = ""; 

    String[] mStringArray = new String[2]; 
    mStringArray[0] = "1"; 
    mStringArray[2] = String.valueOf(dayId); 

    Cursor namirniceCursor = database 
      .rawQuery(
        "select DANI_TABLE.dani,OBROK_TABLE.naziv_obroka,OBROK_TABLE." 
          + "vrijeme_obroka,MENI_PREHRANA.obrok" 
          + " from MENI_PREHRANA " 
          + " inner join DANI_TABLE on DANI_TABLE._id=MENI_PREHRANA.dan_id " 
          + " inner join OBROK_TABLE on  OBROK_TABLE._id=MENI_PREHRANA.obrok_id" 
          + " where MENI_PREHRANA.jelovnik_id=?" 
          + "and MENI_PREHRANA.dan_id=?", mStringArray); 

    int dan = namirniceCursor.getColumnIndex("dani"); 
    int obrok = namirniceCursor.getColumnIndex("obrok"); 
    int nazivObroka = namirniceCursor.getColumnIndex("naziv_obroka"); 
    int vrijeme = namirniceCursor.getColumnIndex("vrijeme_obroka"); 

    for (namirniceCursor.moveToFirst(); !namirniceCursor.isAfterLast(); namirniceCursor 
      .moveToNext()) { 
     result = result + namirniceCursor.getString(dan) + " \n " 
       + namirniceCursor.getString(vrijeme) + " " 
       + namirniceCursor.getString(nazivObroka) + " " 
       + namirniceCursor.getString(obrok); 
    } 

    return result; 
} 

Пожалуйста, попробуйте, и дайте мне знать, если он работает.

+0

Можете ли вы показать, как реализовать свой код в мой пример, потому что я не совсем понял ... я новичок в программировании на Android ... thnk вы заранее –

+0

Я реализовал только как ваше требование. – Chitrang