在使用数据库结果填充列表视图时,我的应用程序现在遇到了最奇怪的问题。
所以,我有一个警报对话框,我可以在其中选择两个标准发送到我的数据库:一个类别产品(餐厅、商店等)和一个支付选项(卡/现金)。
当用户选择某些东西时,它会将 String 变量设置为某个时间间隔(categoryInterval和paymentInterval),这样:
对于类别(它在弹出菜单中):
case R.id.item11c:
filterTitle = "Bakery and Pastry Shops ";
categoryInterval = "('" + 86 + "','" + 87 + "')";
filterButton.setText("Bakery and Pastry shops");
return true;
对于付款选项(在单选按钮中):
OnClickListener radiobutton_no_listener = new OnClickListener() {
public void onClick(View v) {
paymentInterval = "('" + "')";
}
};
OnClickListener radiobutton_yes_listener = new OnClickListener() {
public void onClick(View v) {
paymentInterval = "('" + "visa" + "','" + "master" + "')";
}
};
然后,当用户做出选择并单击警报对话框的“确定”按钮时,会出现一个调用查询方法findFilterInTable()的显示方法(其目的是查找具有 - 在本例中 -他们编号为 86 或 87 的类别列和内部带有“visa”或“master”的付款列)并在我的列表视图中显示结果:
public Cursor findFilterInTable(String categoryInterval,
String paymentInterval) {
String where = COL_CAT1 + " IN " + categoryInterval + " OR " + COL_CAT2
+ " IN " + categoryInterval + " OR " + COL_CAT3 + " IN "
+ categoryInterval + " AND " + COL_PAYMENT + " IN "
+ paymentInterval;
Cursor c = myDatabase.query(DATABASE_TABLE, new String[] { KEY_ROWID,
COL_NAME, COL_STREET, COL_WEBSITE, COL_PAYMENT, COL_TELEPHONE,
COL_PRICE, COL_REMARKS, COL_DATEFRIENDLY }, where, null, null,
null, null);
return c;
}
但它只是部分起作用:它对类别部分(categoryInterval 中的 COL_CAT1 或 .... 中的 COL_CAT2)非常有效,但对于支付部分,我有一个奇怪的结果。当我单击此按钮(通过卡付款)时,它会从列表中检索一些结果,与我不单击时相比,它会检索与研究完全无关的内容。无论我在 paymentInterval (“visa”或“master”以及“okokininjfnsoe”)中写什么,它似乎只是在类别部分检索一些具有特定数字组合的元素。例如,在这种情况下,CAT_3 = 87 的元素,这是没有意义的。
因此,在我的 findFilterInTable() 方法中,我的 paymentInterval 的值会影响结果,但它甚至不会在适当的列 (COL_PAYMENT) 中查找,而是在 COL_CAT1、COL_CAT2、COL_CAT3 中查找,并且由于某种原因,会删除一些结果。
我对此感到非常沮丧,不知道如何找到解决方案。我实际上不知道如何解决我不理解且对我没有意义的问题!谢谢阅读。