主要问题:Android的SQLite的使用两个微调检视筛选器
知道是否有与两个微调任何冲突,当我试图显示与我LoadGrid结果。就好像一个人压倒另一个人,并因此而结果空洞的结果。如果是的话,我怎么去结合纺纱厂的两个结果来获得所需的视图。
一些细节:
我想用我的GridView的两个微调来充当过滤器。一个用于TERMS,一个用于状态。具体而言,我想要发生的是用户可以使用INDIVIDUALLY或TOGETHER这两个纺纱器来过滤数据库中的帐户视图。
一步一个脚印,我已经得到一个微调运行和正常工作。所以我克隆了那个工作微调代码来让我的第二个代码运行起来。不,不工作。现在使用两个纺纱器中的任何一个都没有结果。没有帐户出现了。它会让我从旋转器中选择,但我的网格仍然是空的。
如果缺少任何东西或者您需要查看更多代码,请随时询问。干杯。
这里的微调片段:
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());
}
}
这里的LoadGrid它引用:
public void LoadGrid() {
dbHelper = new DatabaseHelper(this);
try {
View v = spinTerm.getSelectedView();
TextView txt = (TextView) v.findViewById(R.id.txtTermClass);
String Terms = String.valueOf(txt.getText());
Cursor c = dbHelper.getAccByTerms(Terms);
startManagingCursor(c);
View x = spinStat.getSelectedView();
TextView txt2 = (TextView) x.findViewById(R.id.txtStatID);
String Status = String.valueOf(txt2.getText());
Cursor b = dbHelper.getAccByStatus(Status);
startManagingCursor(b);
String[] from = new String[]{DatabaseHelper.colName, DatabaseHelper.colAmount, DatabaseHelper.colTermsClass, DatabaseHelper.colStatClass};
int[] to = new int[]{R.id.colName, R.id.colAmount, R.id.colTerms, R.id.colStat};
SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.gridrow, c, from, to);
grid.setAdapter(sca);
SimpleCursorAdapter sba = new SimpleCursorAdapter(this, R.layout.gridrow, b, from, to);
grid.setAdapter(sba);
} catch (Exception ex) {
AlertDialog.Builder b = new AlertDialog.Builder(this);
b.setMessage(ex.toString());
b.show();
}
}
的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);
}
我真的不明白的问题,但我知道你想筛选基于两个条件的结果。你将不得不改变你正在使用的SQLite查询。使用where子句中的AND子句基于两个spinners过滤结果。更好的写下这段代码“dbHelper.getAccByTerms(Terms);” – drulabs 2015-02-23 16:39:00
感谢您的提醒。澄清了我的主要担忧并添加了片段。我会研究你提到的AND和WHERE子句并回复给你。再次感谢 – Cai 2015-02-24 13:09:26