Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.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
Android微调器,比如我从SQL中提取微调器选择,我还可以添加它们的SQL#id';s到微调器值?_Android_Spinner - Fatal编程技术网

Android微调器,比如我从SQL中提取微调器选择,我还可以添加它们的SQL#id';s到微调器值?

Android微调器,比如我从SQL中提取微调器选择,我还可以添加它们的SQL#id';s到微调器值?,android,spinner,Android,Spinner,我查询我的SQL数据库以填充微调器,我可以用结果图书标题的字符串数组填充微调器(这是一个库样式的应用程序)。虽然将书籍标题放入微调器进行选择没有问题,但将这些标题与它们的SQL id绑定的最佳方法是什么?我一直在寻找一种方法,使纺纱机“多维”,但到目前为止,我不知道如何 任何正确方向的帮助都将不胜感激,谢谢 研究将SimpleCorsorAdapter与微调器一起使用,并为子布局使用自定义视图。:) 我所做的是为微调器使用多维数组。它从string[i][0]中获取内容,ID位于string[i

我查询我的SQL数据库以填充微调器,我可以用结果图书标题的字符串数组填充微调器(这是一个库样式的应用程序)。虽然将书籍标题放入微调器进行选择没有问题,但将这些标题与它们的SQL id绑定的最佳方法是什么?我一直在寻找一种方法,使纺纱机“多维”,但到目前为止,我不知道如何


任何正确方向的帮助都将不胜感激,谢谢

研究将SimpleCorsorAdapter与微调器一起使用,并为子布局使用自定义视图。:)


我所做的是为微调器使用多维数组。它从
string[i][0]
中获取内容,ID位于
string[i][1]
中。让我来看看我用过的代码

public class BNYDirectory extends Activity {

    public static String[] Fields = new String[6];

    public static String[][] BookResults;
    public ArrayAdapter<CharSequence> booksAdapter;

    public ProgressDialog dialog;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.searchscreen);

        new getAllData().execute(this);

        final EditText fname = (EditText) findViewById(R.id.fname);
        final EditText lname = (EditText) findViewById(R.id.lname);
        final EditText aim = (EditText) findViewById(R.id.aim);
        final EditText phone = (EditText) findViewById(R.id.phone);
        final Spinner books = (Spinner) findViewById(R.id.book);

       //Sets up and fills the department spinner
        booksAdapter = new ArrayAdapter<CharSequence>(BNYDirectory.this, android.R.layout.simple_spinner_item);
        booksAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        books.setAdapter(booksAdapter);

      //Search button
        findViewById(R.id.search).setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

              //This grabs the ID from the String[][] for the selected spinner item
                String bookName = BookResults[(int)books.getSelectedItemId()][0];
                String bookId = BookResults[(int)books.getSelectedItemId()][1];

            }
        });
    }


    private class getAllData extends AsyncTask<Context, Void, Cursor> {
        protected void onPreExecute () {
            dialog = ProgressDialog.show(BNYDirectory.this, "", 
                    "Loading. Please wait...", true);
        }

        @Override
        protected Cursor doInBackground(Context... params) {
            setBooks();
            return null;
        }

        protected void onPostExecute(Cursor c) {
            for(int i = 0 ; i < BookResults.length ; i++){
                booksAdapter.add(BookResults[i][0]);            
            }
            dialog.dismiss();
        }
    }

    public static void setBooks(){

        //Basically this sets the String[][] DeptResults so that DeptResults[n][0] is the names, and DeptResults[n][1] is the ID that matches for n.
        //books[n][0] = book name
        //books[n][1] = book ID

        BookResults = books;

    }
}
public类BNYDirectory扩展活动{
公共静态字符串[]字段=新字符串[6];
公共静态字符串[][]BookResults;
公共阵列适配器;
公共对话;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.searchscreen);
新建getAllData().execute(此);
最终EditText fname=(EditText)findViewById(R.id.fname);
最终EditText lname=(EditText)findViewById(R.id.lname);
最终EditText目标=(EditText)findViewById(R.id.aim);
最终EditText电话=(EditText)findViewById(R.id.phone);
最终微调器书本=(微调器)findViewById(R.id.book);
//设置并填充部门微调器
booksAdapter=newarrayadapter(BNYDirectory.this、android.R.layout.simple\u微调器\u项);
booksAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
books.setAdapter(booksAdapter);
//搜索按钮
findviewbyd(R.id.search).setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
//这将从所选微调器项的字符串[][]中获取ID
字符串bookName=BookResults[(int)books.getSelectedItemId()][0];
字符串bookId=BookResults[(int)books.getSelectedItemId()][1];
}
});
}
私有类getAllData扩展异步任务{
受保护的void onPreExecute(){
dialog=ProgressDialog.show(BNYDirectory.this,“,
“正在加载。请稍候…”,正确);
}
@凌驾
受保护的游标doInBackground(上下文…参数){
挫折();
返回null;
}
受保护的void onPostExecute(游标c){
对于(int i=0;i

好的,这样做是使用一个类变量
String[][]BookResults
来保存两个值,名称(在[][0]中)和id(在[][1]中)
BookResults[10][0]
将是
BookResults[10][1]
的ID的书名。本例中的“搜索按钮”显示了如何获取这两个值。

您肯定需要SimpleCorsorAdapter。您必须在select查询中包含_id。这里有一个例子

Spinner spinner = (Spinner) dialog.findViewById(R.id.mm_spinner);

// DatabaseInterface would be your data access class...
DatabaseInterface db = new DatabaseInterface(this);
db.open();

Cursor c = db.getNames(); // This would contain _id, name from a database for example.

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      android.R.layout.simple_spinner_item,
      c,
      new String[] {DatabaseInterface.KEY_ID, DatabaseInterface.KEY_NAME}, 
      new int[] {android.R.id.text1});

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
。。。这将把_id绑定到微调器id。因此,当您使用我下面发布的侦听器在列表中选择一个项目时。您将拥有与列表中的每个名称关联的正确_id

spinner.setOnItemClickListener(new OnItemClickListener() {
     public void onItemClick(AdapterView parent, View view, int position, long id){
           // id = the _id from the cursor
     }
}); 

我认为您可以简单地使用HashMap来添加每个标题及其sql_id,并且当从微调器中选择某个标题时,您只需在HashMap上找到他的id即可。。这就是你想要的吗??