Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用数据库信息填充微调器_Java_Android_Android Spinner_Sqliteopenhelper - Fatal编程技术网

Java 如何用数据库信息填充微调器

Java 如何用数据库信息填充微调器,java,android,android-spinner,sqliteopenhelper,Java,Android,Android Spinner,Sqliteopenhelper,我有一个微调器,我需要用数据库中的信息填充它,但是我发现的示例不起作用 这是我的密码: 公众咨询{ AdminSQLiteOpenHelper管理员= 新建AdminSqliteOpenHelper此,Administration,null,1; SQLiteDatabase bd=admin.getWritableDatabase; 游标c=bd.rawQueryselect name from category,null; startManagingCursorc; //创建一个数组以指定要

我有一个微调器,我需要用数据库中的信息填充它,但是我发现的示例不起作用

这是我的密码:

公众咨询{ AdminSQLiteOpenHelper管理员= 新建AdminSqliteOpenHelper此,Administration,null,1; SQLiteDatabase bd=admin.getWritableDatabase; 游标c=bd.rawQueryselect name from category,null; startManagingCursorc; //创建一个数组以指定要显示的字段 String[]from=新字符串[]{name}; //创建要将数据绑定到的显示项的数组 int[]to=newint[]{android.R.id.text1}; //创建简单的游标适配器 SimpleCorsorAdapter适配器= 新的SimpleCursorAdapterthis,android.R.layout.simple_微调器_项,c,from,to; adapter.setDropDownViewResource android.R.layout.simple\u微调器\u下拉菜单\u项; //获取我们的微调器的参考 喷丝头1.设置适配器适配器; bd.close; }
假设没有遗漏任何代码,则需要查找/定义spinner1,以便框架知道从适配器将信息放在何处

private Spinner spinner1;

spinner1 = (Spinner) view.findViewById(R.id.yourspinnerid);

// rest of your code
我就是这样做的:

db = SQLiteDatabase.openDatabase("/data/data/packagename/databases/mydata.db", null, SQLiteDatabase.OPEN_READONLY);
Cursor c_cat = db.rawQuery("select _id, column_desc from your_table", null);
startManagingCursor(c_cat);
spinner = (Spinner) findViewById(R.id.spinnername);
String[] from = new String[]{"column_desc"};
int[] to = new int[]{android.R.id.text1};
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c_cat, from, to);
mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(mAdapter);
db.close();
我在onCreate中做了所有这些。我在方法之外声明了所有变量,以便它们对整个类公开。我过去犯的一个错误是在填充微调器后关闭光标。如果要在微调器中查看数据,光标必须保持打开状态

我希望这能帮你解决这个问题


编辑:我注意到您没有在查询中查询_id。如果要填充微调器,则必须包含该项。分析我提供的代码。

请在错误日志、堆栈跟踪等后定义不工作。。。。欢迎来到SO!你在哪里定义spinner1?谢谢这是一个很棒的网站,我找到了很多信息,我是android的beginer。问题发生在我运行应用程序时,微调器不会填充任何内容,但如果我将该信息转换为listview或textview,它会工作,我不知道微调器填充方法是否与其他对象不同。它与列表几乎相同。欢迎来到SO。别忘了将答案标记为已接受单击复选标记和/或向上投票,如果它们有助于您或解决您的问题class@Overridepublic void onCreateBundle savedInstanceState{super.onCreatesavedInstanceState;setContentViewR.layout.main;et1=EditTextfindViewByIdR.id.editText1;spinner1=SpinnerfindViewByIdR.id.spinner1;consulta;}您是在那里声明它并设置值,还是声明它以便整个类都可以使用?听起来框架无法找到它来将适配器加载到其中。您可以尝试将其公开,或者将其移动,以便它在主类中声明,而不是在onCreate中声明。啊,看起来您为整个事情声明了它……我现在离开了我完全不知道它为什么不工作。public类proyecto015活动扩展活动{private EditText et1;private Spinner spinner1;/**在首次创建活动时调用。*/@Override public void onCreateBundle savedInstanceState{super.onCreatesavedInstanceState;setContentViewR.layout.main;et1=EditTextfindViewByIdR.id.editText1;spinner1=SpinnerfindViewByIdR.id.spinner1;consulta;}公共无效consulta{}代码是正确的,但我将把DB处理封装到一个类中,类似于DbAdapter,在活动代码中,调用DB并填充微调器。这样一来,cod eis就更灵活,并且对将来的更改更开放。