Select 查询在微调器选择上加载项目
Select query for loading items on spinner selection
我有一个微调器,其中填充了来自 sqlite 的值(来自类别 table 的类别),现在我需要一个 select 查询来将项目检索到 listView 中。这样在微调器 selection 上更改列表视图值也会更改。项目来自另一个table(项目)。cid 是项目table 中的外键,cid 是类别table 中的主键我试过这个但显示空列表视图....
String select = "SELECT " +
Support.KEY_INAME + " FROM "
+ Support.TABLE_ITEMS + " LEFT JOIN "
+ Support.TABLE_CAT + " ON "
+ (Support.TABLE_ITEMS + "." + Support.KEY_CID) +" = "
+ (Support.TABLE_CAT + "." + Support.KEY_CID)
+ " WHERE " + Support.TABLE_CAT + "." + Support.KEY_CID + " =?";
这是我的微调器 selection 和加载列表视图数据代码...
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, final int position, long id) {
Spinner spinner = (Spinner)parent;
if (spinner.getId() == R.id.spinner1) {
dbRepo = new DBRepo(getApplicationContext());
final List<Support> list = dbRepo.getItems1();
adapter = new Custom(Category.this, R.layout.view_entry, list);
adapter.setDropDownViewResource(android.R.layout.simple_list_item_1);
adapter.notifyDataSetChanged();
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lv.setAdapter(adapter);
}
上述查询是正确的,或者我使用这两个查询解决了我的问题
String selectQuery = "SELECT * FROM " + TABLE_ITEM + " WHERE " + KEY_CID + " ='" + cid + "'";
Cursor c = db.rawQuery(selectQuery, null);
或
Cursor c = db.rawQuery("SELECT * FROM item_table WHERE _CategoryID =? " ,new String[]{cid}, null );
并更改代码 spinner.setonItemSelected 像这样
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
handler = new DBSQLite(getBaseContext());
String selected = (String) parent.getItemAtPosition(position);
// Toast.makeText(getApplicationContext(), selected, Toast.LENGTH_SHORT).show();
String cid = handler.getCid(selected);
final ArrayList<Support> item = handler.getItems(cid);
adapter = new CustomAdapter(AvailableItems.this, R.layout.available_view, item);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
我有一个微调器,其中填充了来自 sqlite 的值(来自类别 table 的类别),现在我需要一个 select 查询来将项目检索到 listView 中。这样在微调器 selection 上更改列表视图值也会更改。项目来自另一个table(项目)。cid 是项目table 中的外键,cid 是类别table 中的主键我试过这个但显示空列表视图....
String select = "SELECT " +
Support.KEY_INAME + " FROM "
+ Support.TABLE_ITEMS + " LEFT JOIN "
+ Support.TABLE_CAT + " ON "
+ (Support.TABLE_ITEMS + "." + Support.KEY_CID) +" = "
+ (Support.TABLE_CAT + "." + Support.KEY_CID)
+ " WHERE " + Support.TABLE_CAT + "." + Support.KEY_CID + " =?";
这是我的微调器 selection 和加载列表视图数据代码...
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, final int position, long id) {
Spinner spinner = (Spinner)parent;
if (spinner.getId() == R.id.spinner1) {
dbRepo = new DBRepo(getApplicationContext());
final List<Support> list = dbRepo.getItems1();
adapter = new Custom(Category.this, R.layout.view_entry, list);
adapter.setDropDownViewResource(android.R.layout.simple_list_item_1);
adapter.notifyDataSetChanged();
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lv.setAdapter(adapter);
}
上述查询是正确的,或者我使用这两个查询解决了我的问题
String selectQuery = "SELECT * FROM " + TABLE_ITEM + " WHERE " + KEY_CID + " ='" + cid + "'";
Cursor c = db.rawQuery(selectQuery, null);
或
Cursor c = db.rawQuery("SELECT * FROM item_table WHERE _CategoryID =? " ,new String[]{cid}, null );
并更改代码 spinner.setonItemSelected 像这样
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
handler = new DBSQLite(getBaseContext());
String selected = (String) parent.getItemAtPosition(position);
// Toast.makeText(getApplicationContext(), selected, Toast.LENGTH_SHORT).show();
String cid = handler.getCid(selected);
final ArrayList<Support> item = handler.getItems(cid);
adapter = new CustomAdapter(AvailableItems.this, R.layout.available_view, item);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});