这是在Android中为Spinner实现键值对的正确方法吗?
package com.mypackage
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Spinner;
import android.widget.ArrayAdapter;
import android.widget.AdapterView;
import android.widget.TextView;
public class SpinnerAndAdapter extends Activity
{
TextView valueTextView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
valueTextView = (TextView)findViewById( R.id.selected );
Spinner s = (Spinner)findViewById(R.id.spinner);
final MyData items[] = new MyData[3];
items[0] = new MyData( "key1","value1" );
items[1] = new MyData( "key2","value2" );
items[2] = new MyData( "key3","value3" );
ArrayAdapter<MyData> adapter =
new ArrayAdapter<MyData>(
this,
android.R.layout.simple_spinner_item,
items );
adapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
s.setAdapter(adapter);
s.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
public void onItemSelected(
AdapterView<?> parent,
View view,
int position,
long id) {
MyData d = items[position];
valueTextView.setText( d.getValue() );
}
public void onNothingSelected(AdapterView<?> parent) {
}
}
);
}
class MyData {
public MyData( String spinnerText, String value ) {
this.spinnerText = spinnerText;
this.value = value;
}
public String getSpinnerText() {
return spinnerText;
}
public String getValue() {
return value;
}
public String toString() {
return spinnerText;
}
String spinnerText;
String value;
}
}
Run Code Online (Sandbox Code Playgroud)
这是一种方式.虽然我使用自己的适配器(继承自BaseAdpater),但我使用它非常多.另一种方式是像上面那样有一个索引(0,1,2等)mappd到一个值,当你得到一个项目得到它的索引一个井,所以你可以从地图中检索它的值.我更喜欢那个选项......
我创建了一个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)
| 归档时间: |
|
| 查看次数: |
29089 次 |
| 最近记录: |