0

我有一個存儲兩個變量Days和Percent's的表。我想將它們分配給一個特定的變量。從數據庫Helper類,我得到最後的7項:從ArrayList中檢查數據庫中的數據是否相等

//----------------Graping the last seven elements ----------------------------------// 
public ArrayList<StatsitcsHelper> GetWeaklyPrograss() { 
    SQLiteDatabase db = this.getReadableDatabase(); 

    Cursor cursor = db.rawQuery ("select * from " + TABLE_PROGGRES, null); 

    ArrayList<StatsitcsHelper> datas = new ArrayList<>(); 

    if (cursor != null) { 
     cursor.moveToFirst(); 
     for (int i = cursor.getCount() - 7 ; i < cursor.getCount(); i++) { 
      cursor.moveToPosition(i); 
      StatsitcsHelper data = new StatsitcsHelper(); 
      data.WeakleyDate= cursor.getString(cursor.getColumnIndex(COL_P_Date)); 
      data.WeakleyPercent = cursor.getInt (cursor.getColumnIndex(COL_P_Percentage)); 
      datas.add(data); 
      cursor.moveToNext(); 
     } 
     cursor.close(); 
    } 
    return datas; 
} 

我想建立的聲明,如果會說,如果一天是星期六然後分配週六百分比變量是統計類從數據庫相關聯的百分比。星期天也是一樣......等等。

裏面的統計類:

public void WeaklyStatstics(){ 

    int saturday = 0, 
     sunday = 0, 
     monday = 0, 
     tuesday = 0, 
     wednsday = 0, 
     thersday = 0, 
     friday = 0; 

StatsitcsHelper statsitcsHelper = new StatsitcsHelper(); 
DatabaseHelper databaseHelper = new DatabaseHelper (getActivity()); 

//---------------------TO DO----------------------------------------// 
}} 

我不知道如何在數據庫到另一個階級分析從列表中的每個項目。

下面是表的插入:

// ----------------Proggres Table ------------------------------------// 
public boolean insertPrograss(String Date, Integer percentage) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 

    contentValues.put (COL_P_Date, Date); 
    contentValues.put (COL_P_Percentage, percentage); 


    long result = db.insert (TABLE_PROGGRES, null, contentValues); 
    db.close(); 
    return result != -1; 
} 

該方法通過調度器將被利用日期甲酸日期存儲到剛剛天調用,並且輸出將是星期一,87.

我想寫一個方法來通過GetWeaklyPrograss方法獲得最後7個輸入。並將其分配給變量像這樣

 if(statsitcsHelper.WeakleyDate.equals ("monday")){ 
     saturday = statsitcsHelper.WeakleyPercent; 
    } 

這裏是statsitcsHelper:

public class StatsitcsHelper { 

//-------------- Weakly Progress -----------------------/ 
public String WeakleyDate; 
public int WeakleyPercent; 


} 
+0

問題不是clear.Could你改寫它。 – Krish

+0

我有一個可用於統計類內部的弱條形圖,我試圖從具有日期和百分比字段的數據庫表中獲取變量。 if語句將查看它是哪一天,並將百分比值分配給右側變量以分配給圖表 –

+0

這意味着,您有日期並且想要將其更改爲星期幾? – Krish

回答

0

你可以試試這個邏輯,

public void WeaklyStatstics(){ 

     int saturday = 0, 
       sunday = 0, 
       monday = 0, 
       tuesday = 0, 
       wednsday = 0, 
       thersday = 0, 
       friday = 0; 

     //StatsitcsHelper statsitcsHelper = new StatsitcsHelper(); 
     DatabaseHelper databaseHelper = new DatabaseHelper (getActivity()); 

     ArrayList<StatsitcsHelper> statsitcsHelperList = databaseHelper.GetWeaklyPrograss(); 

     for (StatsitcsHelper statsitcsHelper : statsitcsHelperList) 
     { 
      if(statsitcsHelper.WeakleyDate.equals("Monday")){ 
       monday = statsitcsHelper.WeakleyPercent; 
      }else if (statsitcsHelper.WeakleyDate.equals("Tuesday")){ 
       tuesday = statsitcsHelper.WeakleyPercent; 
      } 
      //todo and write for other days too  
     } 

     // In here you can use all valid data 


    } 
+0

謝謝Krish,它工作。 –

0

我不知道我的理解是什麼問題。

然而,檢查一週的某一天,你可以從這個得到一些想法:

check if date() is monday? java

在一個側面說明: 您的光標包含所有在表中的數據!在你的光標上獲得你想要的結果(最後七個元素)通常會更好。

將您的數據庫查詢限制爲有趣的數據。而不是從數據庫中獲取所有數據(select * from),您應該專門查詢。 查找SQL表達式ORDER BY,ASC,DESC,LIMIT,您將到達那裏。

+0

日期字段正在存儲它是哪一天的字符串。我怎樣才能讀取表中的每一行,並檢查字符串是否相等並分配給寫入地點,sudko代碼:通過GetWeaklyPrograss帶來一行,如果相等,則看到日期字段星期六然後星期六變量=該行的百分比 –

+0

您可以複製你已經擁有了七天的代碼:if(statsitcsHelper.WeakleyDate.equals(「monday」)){{0} {0} {0}星期六= statsitcsHelper.WeakleyPercent; } – gpolic

+0

GetWeaklyPrograss位於DatabaseHelper內部,它在列表中迭代以產生7行。該工作應該在Statistics類中,它應該讀取每一行,並檢查它的星期一然後它將百分比分配給一個int變量 –