如何在微调器中控制值和文本

时间:2014-04-10 10:10:42

标签: android spinner

我想用微调器构建android应用程序,我想在微调器中出现一些文本,并且在选中时,它会出现在TextView其他文本中,而不是选中的值。 例如,我想出现在微调器网站名称(如= stackoverflow)中,当select在文本视图中显示网站URL(如= https://stackoverflow.com/

任何人都可以帮助我吗?

提前致谢

4 个答案:

答案 0 :(得分:1)

首先,您自己创建一个对象:

public class LanguageObject {
    private String title;
    private String url;

    public LanguageObject(String title, String url) {
        this.title = title;
        this.url = url;
    }

    public String getTitle() {
        return title;
    }

    public Integer getUrl() {
        return url;
    }

}

然后,在Activity / Fragment中,使用所需的对象创建一个ArrayList:

ArrayList<SpinnerObject> spinnerObjectList = new ArrayList<SpinnerObject>();
        spinnerObjectList.add(new SpinnerObject("Google", "www.google.com"));
        spinnerObjectList.add(new SpinnerObject("StackOverflow", "www.stackoverflow.com"));

除此之外,创建一个可处理数据的自定义适配器:

public class SpinnerAdapter extends ArrayAdapter<SpinnerObject> {
public SpinnerAdapter (Context context, int textViewResourceId, ArrayList<SpinnerObject> spinnerObjects) {
    super(context, textViewResourceId, spinnerObjects);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = convertView;
    SpinnerObject spinnerObject = getItem(position);

    if(view == null) {
        LayoutInflater layoutInflater;
        layoutInflater = LayoutInflater.from(getContext());

        view = layoutInflater.inflate(android.R.layout.select_dialog_item, null);

        if (view != null) {
            TextView textView = (TextView) view.findViewById(android.R.id.text1);
            textView.setText(spinnerObject.getTitle());
        }
    }

    return view;
}

现在您可以在Spinner上使用此适配器,并在单击其中一个项目时获取该URL。

答案 1 :(得分:0)

要在微调器中添加文本,您可以在onCreate()

中使用以下代码
Spinner locale;
ArrayList<String> lList;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


     locale =(Spinner)findViewById(R.id.Cmblocale);

    // bind data to Spinner(ComboBox)
    lList =new ArrayList<String>();
    lList.add("English");
    lList.add("Canada");
    lList.add("Chinese");
    lList.add("French");
    lList.add("Germany");
    lList.add("Japan");
    ArrayAdapter<String> cAdapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item,lList);

    locale.setAdapter(cAdapter);
}

对于检索值,请使用微调器上的setOnItemSelectedListener内的以下代码

if(locale.getSelectedItem().equals("English"))
    {
        txtText.setText(English);
    }else if(locale.getSelectedItem().equals("Chinese"))
    {
        txtText.setText(Chinese);
    }else if(locale.getSelectedItem().equals("Canada"))
    {
        txtText.setText(Canada);
    }else if(locale.getSelectedItem().equals("French"))
    {
        txtText.setText(French);
    }else if(locale.getSelectedItem().equals("Germany"))
    {
        txtText.setText(Germany);
    }else if(locale.getSelectedItem().equals("Japan"))
    {
        txtText.setText(Japan);
    }

答案 2 :(得分:0)

您可以像这样添加文本到微调器:

Spinner spinner = (Spinner) findViewById(R.id.spinner);

List<String> texts = new ArrayList<String>();
texts.add("Google");
texts.add("Facebook");

List<String> urls = new ArrayList<String>();
urls.add("www.google.com");
urls.add("www.facebook.com");

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, texts);
spinner.setAdapter(adapter);

然后你需要监听在微调器上选择的项目

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        String url = urls.get(i);
        // do with url whatever you need
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {
        // do nothing
    }
});

答案 3 :(得分:0)

Spinner spinner = (Spinner) findViewById(R.id.spinner); //create a spinner view in XML

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
    R.array.your_array, android.R.layout.simple_spinner_item); // create adapter which has second parameter as the array which contains the values you want to show as entries of spinner
spinner.setAdapter(adapter); // set the adapter to your spinner and your spinner will show the values from array that you set in second parameter of adapter

收听微调器选项的点击

public class SpinnerActivity extends Activity implements OnItemSelectedListener {
...

public void onItemSelected(AdapterView<?> parent, View view, 
        int pos, long id) {
    // An item was selected. You can retrieve the selected item using
    // parent.getItemAtPosition(pos)
}

public void onNothingSelected(AdapterView<?> parent) {
    // Another interface callback
}
}

现在,为了显示spinner所选选项的网站的相应链接,您可以拥有一个地图,其中的键与作为网站的微调器值和值相同......

HashMap<String, String> nameWebsiteMap = new HashMap<String, String>();
nameWebsite.put("stack overflow","http://stackoverflow.com/"); // for example

所以在onItemSelected你可以简单地做到这一点

selectedSiteName = nameWebsite.get(parent.getItemAtPosition(pos).toString());
textView.setText(selectedSiteName);