我有一个带有“mytable”表的数据库,其中包含2个列“id”,“sampletext” 我想使用SimpleCursorAdapter查询sampletext的不同值并将其提供给Spinner。
这是尝试的内容
String[] cols=new String[]{"sampletext"};
int[] lbls=new lbls[]{android.R.id.text1};
mycursor=sdb.query(true,"mytable", cols,null,null,null,null,null,null);
sca=new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, mycursor, cols,lbls,0);
sca.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spn.setAdapter(sca);
当我运行这个时,我在第4行得到错误:id不存在。 当我将第一行改为“id”时,微调器被填充了id值。 但我需要“样本文本”,我做错了什么? 感谢任何建议
答案 0 :(得分:12)
what am i doing wrong
你没看过文件......
有两个带字符串的字符串数组:第一个用于查询,第二个用于适配器构造函数(您只使用一个数组)
第一个告诉sqlite哪些列应该被带到Cursor,第二个告诉Adapter哪些应该显示/映射到单行的Views ...
下一个CursorAdapter
需要Cursor
,其中包含名为_id
所以现在很明显我们应该像这样做:
String[] queryCols=new String[]{"_id", "sampletext"};
String[] adapterCols=new String[]{"sampletext"};
int[] adapterRowViews=new int[]{android.R.id.text1};
mycursor=sdb.query(true,"mytable", queryCols,null,null,null,null,null,null);
sca=new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, mycursor, adapterCols, adapterRowViews,0);
sca.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spn.setAdapter(sca);
答案 1 :(得分:1)
以下是原始查询的示例。请注意,查询返回的第一个ID列应标记为_id
。
MyDatabase.java:
public class MyDatabase extends SQLiteAssetHelper {
...
public Cursor getListNamesForDropDown() {
SQLiteDatabase db = getReadableDatabase();
String sql = "select ID _id, Name from MyTable order by Name ";
Cursor c = db.rawQuery(sql, null);
c.moveToFirst();
return c;
}
MyActivity.java:
@Override
public void onCreate(Bundle savedInstanceState) {
....
Cursor cursorTest = db.getListNamesForDropDown();
android.widget.SimpleCursorAdapter adapter = new android.widget.SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item,
cursorTest,
new String[] {"Name"},
new int[] {android.R.id.text1}, 0);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerTest.setAdapter(adapter);
答案 2 :(得分:0)
android.widget.SimpleCursorAdapter adapter = new android.widget.SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item,
cursor,
new String[] { DBOpenHelper.ACCOUNT_BANK },
new int[] { android.R.id.text1 }, 0);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);