Android SQLite使用两个微调器作为视图过滤器
主要问题: 想知道当我尝试用LoadGrid显示结果时,这两个微调器是否有冲突。就像一个覆盖另一个,并因此而以空结果结束。如果是这样的话,我该如何将微调器的两个结果进行组合以获得所需的视图 一些细节: 我想在gridview上使用两个微调器作为过滤器。一个是条款,一个是地位。具体地说,我希望用户可以单独或一起使用这两个微调器来过滤数据库中的帐户视图 一步一个脚印,我已经让一个旋转器正常运转。因此,我克隆了正在工作的微调器代码,以启动并运行第二个微调器。不,不工作。现在使用两个微调器中的任何一个都不会产生任何结果。没有账户出现了。它允许我从微调器中进行选择,但我的网格仍然是空的 如果缺少任何内容或您需要查看更多代码,请随时询问。干杯 以下是微调器片段:Android SQLite使用两个微调器作为视图过滤器,android,sqlite,gridview,filtering,android-spinner,Android,Sqlite,Gridview,Filtering,Android Spinner,主要问题: 想知道当我尝试用LoadGrid显示结果时,这两个微调器是否有冲突。就像一个覆盖另一个,并因此而以空结果结束。如果是这样的话,我该如何将微调器的两个结果进行组合以获得所需的视图 一些细节: 我想在gridview上使用两个微调器作为过滤器。一个是条款,一个是地位。具体地说,我希望用户可以单独或一起使用这两个微调器来过滤数据库中的帐户视图 一步一个脚印,我已经让一个旋转器正常运转。因此,我克隆了正在工作的微调器代码,以启动并运行第二个微调器。不,不工作。现在使用两个微调器中的任何一个都
Utilities.ManageTermSpinner(this.getParent(), spinTerm);
try {
spinTerm.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
LoadGrid();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
} catch (Exception ex) {
txtTest.setText(ex.toString());
}
Utilities.ManageStatSpinner(this.getParent(), spinStat);
try {
spinStat.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
LoadGrid();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
} catch (Exception ex) {
txtTest2.setText(ex.toString());
}
}
术语和状态的dbHelper代码段:
public Cursor getAccByTerms(String Terms)
{
SQLiteDatabase db=this.getReadableDatabase();
String [] columns=new String[]{"_id",colName,colAmount,colPurpose,colTermsClass,colDate,colEditDate,colStatClass};
Cursor c=db.query(viewAccs, columns, colTermsClass+"=?", new String[]{Terms}, null, null, null);
return c;
}
public Cursor getAccByStatus(String Status)
{
SQLiteDatabase db=this.getReadableDatabase();
String [] columns=new String[]{"_id",colName,colAmount,colPurpose, colTermsClass,colDate,colEditDate,colStatClass};
Cursor d=db.query(viewAccs,columns, colStatClass +"=?",new String[]{Status},null,null,null);
return d;
}
还有我保存ManageSpinner内容的实用程序片段:
public class Utilities {
static public void ManageTermSpinner(Context context, Spinner view) {
DatabaseHelper dbHelper = new DatabaseHelper(context);
Cursor c = dbHelper.getAllTerms();
SimpleCursorAdapter ca = new SimpleCursorAdapter(context, R.layout.termspinnerrow, c, new String[]{DatabaseHelper.colTermsClass, "_id"}, new int[]{R.id.txtTermClass});
view.setAdapter(ca);
}
static public void ManageStatSpinner(Context context, Spinner view) {
DatabaseHelper dbHelper = new DatabaseHelper(context);
Cursor d = dbHelper.getAllStatus();
SimpleCursorAdapter da = new SimpleCursorAdapter(context,R.layout.statspinnerrow, d, new String[]{DatabaseHelper.colStatClass,"_id"}, new int[]{R.id.txtStatClass});
view.setAdapter(da);
}
这就是你需要做的:
public Cursor getAccByTermsAndStatus(String Terms, String status)
{
SQLiteDatabase db=this.getReadableDatabase();
String [] columns=new String[]{"_id",colName,colAmount,colPurpose,colTermsClass,colDate,colEditDate,colStatClass};
Cursor c=db.query(viewAccs, columns, colTermsClass+"=? AND " + colStatClass + "=?", new String[]{Terms, status}, null, null, null);
return c;
}
我真的不明白这个问题,但我知道你想根据两个条件过滤结果。您必须更改正在使用的sqlite查询。使用AND子句和where子句根据两个微调器过滤结果。最好编写以下代码“dbHelper.getAccByTerms(Terms);”,谢谢提醒。澄清了我的主要顾虑并添加了代码片段。我会调查一下你提到的AND和WHERE条款,然后再给你回复。再次感谢。当我尝试使用你提到的WHERE和OR子句时,我得到了几乎相同的代码,只是我的语法和“”完全错误。非常感谢,干杯!
public Cursor getAccByTermsAndStatus(String Terms, String status)
{
SQLiteDatabase db=this.getReadableDatabase();
String [] columns=new String[]{"_id",colName,colAmount,colPurpose,colTermsClass,colDate,colEditDate,colStatClass};
Cursor c=db.query(viewAccs, columns, colTermsClass+"=? AND " + colStatClass + "=?", new String[]{Terms, status}, null, null, null);
return c;
}