【问题标题】:How to Add a extra value to spinner如何为微调器添加额外的价值
【发布时间】:2013-03-05 16:34:04
【问题描述】:

这里是解决方案答案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?

【问题讨论】:

  • 光标适配器你知道吗?

标签: android android-spinner


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试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 item click 得到这样的值

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

    【讨论】:

    • 我不明白,所以我必须将哈希映射添加到我的 arrayadapter?
    • @user2033349 不是那样.....将您在微调器中显示的值映射为键,并将相应的 ID 映射为 Hashmap 中的值,从微调器选择中您将获得值,将该值作为键传递给 hashmap,因此它会为您提供相应的 Id
    【解决方案3】:

    看看使用SimpleCursorAdapter 代替您的微调器。尽管自 API-11 以来已弃用此功能,但您可能还需要考虑使用 LoaderManagerCursorLoader

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

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

    【讨论】:

    • 我试试这个 SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,CS,new String[] {"Name"},new int[] {android.R.id.文本1});并且没有显示数据
    • 我在这里找到了答案 ANSWER congdegnu.es/2011/06/02/…
    【解决方案4】:

    1) 创建ArrayList&lt;School&gt;

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

    【讨论】:

    • 好的,但我不想得到一个 pos int 作为 id 我已经在我的 sqlite 中有一个 ID 或者我错过了什么?谢谢你的时间
    • 我在这里找到了答案 ANSWER congdegnu.es/2011/06/02/… 谢谢
    • pos 不是 id,它是指在列表中的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2019-09-27
    • 2020-05-22
    相关资源
    最近更新 更多