预先感谢您的回复。我目前正在研究Android应用程序,让用户从10个微调器类型(下拉列表)中选择几个选项。但是对于每个onChanged点击微调器,我必须检查其他微调器项目在光标中进行查询。我想使用if-else语句来解决它,因为if-else语句是接近我需要的结果的更简单的方法,但它会消耗太多的LOC,并且在需要修改代码时效率不高。
很抱歉要求你提供解决方案,但我无法找到更好的方法。
答案 0 :(得分:0)
您可以将下拉列表的最后已知值存储到变量中,然后在单击时运行这些存储的变量。
var storedVaribles[10];
OnChanged(int i, var changedVariable)
{
storedVariables[i] = changedVariable;
checkWithAllStoredVariables(storedVariables);
}
这只是伪代码,但它应该让您了解解决方案的方向。
或许这类问题更适合CodeReview。
答案 1 :(得分:0)
您可以控制您的微调器适配器。尝试构建数据,以便直接获取查询中的信息。基本的想法是有这样一个对象:
class SpinnerItem {
String displayTitle;
String querySyntax;
public SpinnerItem(String title, string sql) {
displayTitle = title;
querySyntax = sql;
}
}
然后创建一个SpinnerAdapter
来保存数组或这些对象的列表。在getView()
中,您可以将displayTitle
绑定到用户看到的TextView。如果您想撰写查询,可以致电
SpinnerItem item = adapter.getItem(spinner.getSelectedItemPosition());
// use item.querySyntax in your query
作为一个非常简单的例子,假设我有一个包含联系人的表,每个联系人都有一个电子邮件或电话号码。我希望查询根据选定的微调项目过滤此类型。以下是我如何构建它:
List<SpinnerItem> items = new ArrayList<SpinnerItem>();
items.add(new SpinnerItem("All", "1"));
items.add(new SpinnerItem("Phone numbers only", "type = 'phone'"));
items.add(new SpinnerItem("Emails only", "type = 'email'"));
MySpinnerAdapter adapter = new MySpinnerAdapter(items);
spinner.setAdapter(adapter);
// later when building query ...
StringBuilder builder = new StringBuilder("select * from table where ");
SpinnerItem item = adapter.getItem(spinner.getSelectedItemPosition());
builder.append(item.querySyntax);
String sql = builder.toString();