android - 在 android Spinner 中实现键值对的最佳实践

标签 android android-spinner

我想用 key value 实现一个 android 微调器。

en:english jp:japanese

当用户选择和项目时,我想将 key 保存到数据库中。而且在下一次加载时,我希望微调器选择一个微粒微调器位置。

任何人都可以告诉我实现它的最佳方法是什么。

我已尝试关注但不符合我的要求 https://gist.github.com/granoeste/2786663 Set Key and Value in spinner

现在写我正在使用 LinkedHashMapAdapter。但问题是,在这里我需要将位置存储在数据库或本地共享首选项中。我认为这不是更好的解决方案

当前实现

LinkedHashMap localeList = new LinkedHashMap<>();

        for (Map.Entry<String, String> val : map.entrySet()) {
            int resourceId = getResources().getIdentifier(val.getValue(), "string", getPackageName());
            localeList.put(val.getKey(), getResources().getString(resourceId));

        }
        LinkedHashMapAdapter<String, String> arrayAdapter = new LinkedHashMapAdapter<>(this, R.layout.spinner_layout, localeList);
        arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        mLocale.setAdapter(arrayAdapter);
        String localPosSelected = PreferencesHelper.getSharedPreferenceString(this, Constants.PREF_LOCALE_POS_KEY);
        if(localPosSelected!=null){
            mLocale.setSelection(Integer.parseInt(localPosSelected));
        }

还有一个选项可以按值选择 Spinner 的项目

最佳答案

设置微调器:

        spLang = (Spinner)view.findViewById( R.id.spLang );
        spLang.setOnItemSelectedListener( this );
        ArrayList<String> sp_Lang = new ArrayList<String>();
        sp_Lang.add("english");
        sp_Lang.add("french");
        ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item, sp_Lang);
        spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spLang.setAdapter(spinnerAdapter);

对于 Perticular Spinner 项目选择:

int Position = spinnerAdapter.getPosition("Japanese");
spLang.setSelection(Position);

首先为存储键值对创建Hashmap

HashMap<String ,String> hmLang = new HashMap<String,String>();

现在将这样的值添加到 HashMap 中:

hmLang.put("english" ,"en");

在 HashMap 中 key = YourValue 和 Value = yourKey

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
    switch(adapterView.getId())
    {
        case R.id.spLang:
        String lang_Name = adapterView.getItemAtPosition(position).toString();
        String lang_Key = hmLang.get(lang_Name);
        break

    }

如果您对此代码有任何问题,请询问

关于android - 在 android Spinner 中实现键值对的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35449800/

相关文章:

android - 如何制作数字时钟应用程序小部件?服务真的有必要吗?

android - 将结果传递给另一个 Activity

android - Spinner 下拉项目彩色背景的波纹效果 (appcompat-v7 V21)

android - 在 RecyclerView 中获取微调器选择的项目

Android - 微调器文本颜色更改不起作用

java - Spinner 的条件语句

android - 秒表逻辑

android - 屏幕方向改变后如何不重新创建自己?

java - 线程 "main"java.lang.RuntimeException : Stub XmlPullParserFactory 中的异常

java - 旋转器无法正常工作