0

在这里解决的是解决方案答案http://www.congdegnu.es/2011/06/02/spinners-en-android-tres-formas-de-poblarlos/ 我正在从我的 sqlite 数据库中填充一个微调器,如下所示:

Cursor CS = newDB.rawQuery("Select ID AS _id, Name from Schools",null);
    CS.moveToFirst();
    do{     
        Schools.add(CS.getString(CS.getColumnIndex("_id")));   
    } while(CS.moveToNext());

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_spinner_item,Schools);

dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner1.setAdapter(dataAdapter);

我的问题是我只添加了一个 id 但我怎样才能为该 id 添加一个值,所以当值获取时我得到了 id ?

4

4 回答 4

0

我认为“学校”是一个包含您自己的班级“学校”的数组。
您可以添加一个包含信息的属性。
或者您可以使用二维数组。
比你必须设置你的 arrayadapter 来获取信息(getter 方法)。
希望能帮助到你

于 2013-03-05T16:40:36.640 回答
0

试试光标适配器

或者

取一个全局变量

 Hashmap schoolmap=new Hashmap(); 

在向列表中插入数据的同时,也像这样添加到 Hashmap

CS.moveToFirst();
    do{     
        Schools.add(CS.getString(CS.getColumnIndex("_id")));   
        schoolmap.put(CS.getString(CS.getColumnIndex("_id")),CS.getColumnIndex("_id"))
    } while(CS.moveToNext());

onSpinner 项目单击获取这样的值

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

         public void onItemSelected(AdapterView<?> parent, View view, 
                    int pos, long id) {
              String value=((TextView)view).getText();
              int id=Integer.parseInt(schoolmap.get(value));
            }

            public void onNothingSelected(AdapterView<?> parent) {

            }

    }); 
于 2013-03-05T16:43:06.447 回答
0

1) Create an ArrayList<School>

2) Add all your Schools to the Arraylist

3) Create a custom adapter like this:

public class SchoolAdapter extends ArrayAdapter<School>{

    public SchoolAdapter(Context ctx, List<School> schools){
        super(ctx, 0, schools);
    }


    @Override
    public View getView(final int position, final View convertView, final ViewGroup parent) {

        TextView tv;
        if (convertView == null){
            tv = new TextView(getContext());
        } else {
            tv = (TextView) convertView;
        }
        tv.setTextSize(16);
        final School school = getItem(position);
        tv.setText(school.toString());
        return tv;
    }

}

4) Use this in your activity:

final SchoolAdapter adapter = new SchoolAdapter(this, schools);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

     public void onItemSelected(AdapterView<?> parent, View view, 
                int pos, long id) {
         School school = adapter.getItem(pos);
         // Do whatever you want with your school            

     }

     public void onNothingSelected(AdapterView<?> parent) {

     }

}); 
于 2013-03-05T16:55:06.833 回答
0

看看使用SimpleCursorAdapter代替您的微调器。尽管这自 API-11 以来已被弃用,但您可能还想考虑将LoaderManagerCursorLoader一起使用。

关于如何转换到 LoaderManager 和 CursorLoader 的解释可以在这里找到: 如何从 managedQuery 转换到 LoaderManager/CursorLoader?

我建议您从使用 SimpleCursorAdapter 开始,然后如果足够舒适,请继续使用其他方法。

于 2013-03-05T16:38:17.363 回答