如何为微调器添加额外的值

时间:2013-03-05 16:34:04

标签: android android-spinner

解决这里是解决方案的答案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添加一个值,所以当值get select时我会得到id?

4 个答案:

答案 0 :(得分:0)

看一下使用SimpleCursorAdapter代替你的微调器。虽然自API-11以来已弃用此功能,但您可能还需要考虑使用带有LoaderManagerCursorLoader

可以在此处找到有关如何转换到LoaderManager和CursorLoader的说明: How to transition from managedQuery to LoaderManager/CursorLoader?

我建议你先使用SimpleCursorAdapter,然后如果足够舒适,继续使用另一种方法。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

尝试Cursor Adapter

采用全局变量

 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) {

            }

    }); 

答案 3 :(得分:0)

1)创建ArrayList<School>

2)将所有学校添加到Arraylist

3)创建一个这样的自定义适配器:

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)在你的活动中使用它:

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) {

     }

});