我在sqlite中有一个表,其中记录了重量。 现在我想比较输入的新值是否为<或==或>比最后一个值。 我的问题是我无法将“仅”与最终值进行比较,比较使我在表格中记录了所有记录。 这是我的代码
private class MyCursorAdapter extends SimpleCursorAdapter {
public MyCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to, int flags) {
super(context, layout, c, from, to, flags);}
@Override
public Object getItem(int position) {
return super.getItem(super.getCount() - position - 1);}
@Override
public void bindView(View view, Context context, Cursor cursor) {
super.bindView(view, context, cursor);
String query = "SELECT nombre FROM miembros order by nombre DESC limit 1";
SQLiteDatabase datos;
datos = getApplicationContext().openOrCreateDatabase("DBMIEMBRO", Context.MODE_PRIVATE, null);
Cursor c = datos.rawQuery(query, null);
int previous_day=0;
if (c != null && c.moveToFirst()) {
previous_day= (int) c.getLong(0)-1;
}
int present_day=(int) cursor.getLong(cursor.getColumnIndex(DBhelper.MIEMBRO_NOMBRE));
if (present_day > previous_day){
view.setBackgroundColor(Color.parseColor("#F0A1A1"));}//red
if (present_day < previous_day){
view.setBackgroundColor(Color.parseColor("#AAF0A1"));}//green
if (present_day == previous_day){
view.setBackgroundColor(Color.parseColor("#18DBDB"));}//blue
有什么想法吗? 感谢
答案 0 :(得分:0)
现在不能在这里写一些代码,但这是我实现它的想法:
我会向数据库和附加列添加一个触发器,例如,less - 1,equal - 2,more - 3.每个新的条目触发器都会根据just之间的比较结果为此条目添加一个标志添加和以前的重量值。在您的代码中,您需要的只是从数据库表中获取标志,并根据它绘制具有相应颜色的视图。
我认为可以使用相同的方法进行行更新。
添加了触发器代码:
BEGIN TRANSACTION;
CREATE TABLE weights (_id INTEGER PRIMARY KEY ASC AUTOINCREMENT, weight INTEGER, flag INTEGER);
CREATE TRIGGER less_flag AFTER INSERT ON weights WHEN (SELECT weight FROM weights WHERE _id = last_insert_rowid()) < (SELECT weight FROM weights WHERE _id IN (select MAX(_id) from weights where _id <> last_insert_rowid())) BEGIN update weights set flag = 0 where _id = last_insert_rowid(); END;
CREATE TRIGGER more_flag AFTER INSERT ON weights WHEN (SELECT weight FROM weights WHERE _id = last_insert_rowid()) > (SELECT weight FROM weights WHERE _id IN (select MAX(_id) from weights where _id <> last_insert_rowid())) BEGIN update weights set flag = 1 where _id = last_insert_rowid(); END;
COMMIT TRANSACTION;
这里1 - 新值比以前更大。 0 - 更低。空 - 相等