从ArrayList中检查数据库中的数据是否相等

问题描述:

我有一个存储两个变量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

你可以试试这个逻辑,

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,它工作。 –

我不知道我的理解是什么问题。

然而,检查一周的某一天,你可以从这个得到一些想法:

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变量 –