Rah*_*hul 3 android android-spinner
我想实现一个具有键值的android微调器.
EN:english jp:japanese
当用户选择和项目我想将密钥保存到数据库.而且在下一次加载时我想要旋转器选择微粒旋转器位置.
任何人都可以告诉我实现这个的最佳方法是什么.
我试过以下但没有达到我的要求 https://gist.github.com/granoeste/2786663 在微调器中设置键和值
现在写我正在使用LinkedHashMapAdapter.但问题是,我需要在DB或本地共享首选项中存储位置.我不认为这是一个更好的解决方案
目前的实施
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));
}
Run Code Online (Sandbox Code Playgroud)
也可以通过值选择Spinner的选项
Dha*_*ani 13
设置微调器:
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);
Run Code Online (Sandbox Code Playgroud)
对于Perticular Spinner项目选择:
int Position = spinnerAdapter.getPosition("Japanese");
spLang.setSelection(Position);
Run Code Online (Sandbox Code Playgroud)
首先为商店密钥和值对创建Hashmap
HashMap<String ,String> hmLang = new HashMap<String,String>();
Run Code Online (Sandbox Code Playgroud)
现在将这样的值添加到HashMap中:
hmLang.put("english" ,"en");
Run Code Online (Sandbox Code Playgroud)
这里在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
}
Run Code Online (Sandbox Code Playgroud)
如果您对此代码有任何疑问,请询问
我创建了一个HashMap适配器来用于这些场景。另请参阅此处的示例项目
mapData = new LinkedHashMap<String, String>();
mapData.put("shamu", "Nexus 6");
mapData.put("fugu", "Nexus Player");
mapData.put("volantisg", "Nexus 9 (LTE)");
mapData.put("volantis", "Nexus 9 (Wi-Fi)");
mapData.put("hammerhead", "Nexus 5 (GSM/LTE)");
mapData.put("razor", "Nexus 7 [2013] (Wi-Fi)");
mapData.put("razorg", "Nexus 7 [2013] (Mobile)");
mapData.put("mantaray", "Nexus 10");
mapData.put("occam", "Nexus 4");
mapData.put("nakasi", "Nexus 7 (Wi-Fi)");
mapData.put("nakasig", "Nexus 7 (Mobile)");
mapData.put("tungsten", "Nexus Q");
adapter = new LinkedHashMapAdapter<String, String>(this, android.R.layout.simple_spinner_item, mapData);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14382 次 |
| 最近记录: |