Android 从ArrayList(以DB为单位)进行检查(如果相等)

Android 从ArrayList(以DB为单位)进行检查(如果相等),android,android-sqlite,android-arrayadapter,android-cursor,Android,Android Sqlite,Android Arrayadapter,Android Cursor,我有一个存储两个变量天和百分比的表。我想把它们分配给一个特定的变量。从Database Helper类中,我得到了最后7个条目: //----------------Graping the last seven elements ----------------------------------// public ArrayList<StatsitcsHelper> GetWeaklyPrograss() { SQLiteDatabase db = this.getRead

我有一个存储两个变量天和百分比的表。我想把它们分配给一个特定的变量。从Database Helper类中,我得到了最后7个条目:

//----------------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;
}
我不知道如何将数据库列表中的每一项分析到另一个类

以下是表格的插入:

    // ----------------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;
}
该方法由调度器调用,调度器将使用date Format将日期存储到just day中,输出为87年的星期一

我想写一个方法,通过GetWeaklyPrograss方法获得最后7个输入。把它分配给变量,比如

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

public class StatsitcsHelper {

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


}

我不确定我是否理解问题所在

但是,要查看一周中的哪一天,您可以从中获得一些想法:

旁注: 您的光标包含表中的所有数据!通常,最好得到光标上最后七个元素所需的结果

将数据库查询限制为感兴趣的数据。您应该专门化查询,而不是从DB select*from获取所有数据。
查找SQL表达式ORDER BY、ASC、DESC、LIMIT,您就可以到达那里。

您能试试这个逻辑吗

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


    }

问题不清楚。你能重新表述一下吗。我在统计类中有一个弱条形图,我试图从数据库表中获取包含day和percent字段的变量。if语句将看到它是哪一天,并将百分比值分配给要分配给图表的正确变量。这意味着,您有日期,并且希望将其更改为星期天?不,它存储为天,所以很好goSo您有什么问题?我不明白。日期字段正在存储日期字符串。如何读取表中的每一行并检查字符串是否相等并分配给写入位置,sudko代码:通过GetWeaklyPrograss获取一行,并查看日期字段是否等于Saturday然后Saturday变量=该行百分比您可以复制七天中已有的代码:ifstatsitcsHelper.WeakleyDate.equals monday{saturday=statsitcsHelper.WeakleyPercent;}GetWeaklyPrograss在DatabaseHelper中,它在列表中迭代以获得7行。工作应该在Statistics类中,它应该读取每一行并检查其星期一是否正确,然后将百分比分配给那里的int变量
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


    }