我想将微调器值存储在String中并将其显示在Textview上

时间:2016-02-19 10:47:10

标签: android

我的代码正在运行,我在textview上获得了价值,但是在第一次点击时没有改变,假设我的微调器弹出,我选择其他值,而不是同时我的textview值没有改变它的变化下一次点击。

package com.vedicrishiastro.kundli.Screens.Extras;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;

import com.vedicrishiastro.kundli.R;
import com.vedicrishiastro.kundli.Screens.AbstractActivity;

public class Settings extends AbstractActivity implements View.OnClickListener {

    private LinearLayout linearSelectLang,linearSetDefault,linearSelectPanch;
    private TextView txtSelectLang,txtSetDefault,txtSelectPanch;
    private Spinner spinner1,spinner2,spinner3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);

        linearSelectLang = (LinearLayout)findViewById(R.id.LinearSelectLang);
        linearSetDefault = (LinearLayout)findViewById(R.id.LinearSetDefault);
        linearSelectPanch = (LinearLayout)findViewById(R.id.LinearSelectPanch);

        spinner1 = (Spinner)findViewById(R.id.settingSpinner1);
        spinner2 = (Spinner)findViewById(R.id.settingSpinner2);
        spinner3 = (Spinner)findViewById(R.id.settingSpinner3);

        txtSelectLang = (TextView)findViewById(R.id.selectLangtext);
        txtSetDefault = (TextView)findViewById(R.id.setdefaulttext);
        txtSelectPanch = (TextView)findViewById(R.id.selectPanchtext);

        linearSelectLang.setOnClickListener(this);
        linearSetDefault.setOnClickListener(this);
        linearSelectPanch.setOnClickListener(this);
        spinner1.setVisibility(View.GONE);
        spinner2.setVisibility(View.GONE);
        spinner3.setVisibility(View.GONE);
    }

    public void onClick(View view){
        int id = view.getId();
        switch (id){
            case R.id.LinearSelectLang:
            {
                spinner1.performClick();
                String text = spinner1.getSelectedItem().toString();
                txtSelectLang.setText(text);
                spinner1.setVisibility(View.GONE);
            }
            break;
            case R.id.LinearSetDefault:
            {
                spinner2.performClick();
                String text = spinner2.getSelectedItem().toString();
                txtSetDefault.setText(text);
                spinner2.setVisibility(View.GONE);
            }
            break;
            case R.id.LinearSelectPanch:
            {
                spinner3.performClick();
                String text = spinner3.getSelectedItem().toString();
                txtSelectPanch.setText(text);
                spinner3.setVisibility(View.GONE);
            }
            break;
        }
    }

}

我试过了,但它没有工作

 case R.id.LinearSelectLang:
            {
                spinner1.performClick();
                spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                        if (position == 0)
                        {
                            txtSelectLang.setText("English");
                        }
                        else
                        {
                            txtSelectLang.setText("हिंदी");
                        }
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {

                    }
                });

            }
            break;

2 个答案:

答案 0 :(得分:1)

Spinner 创建 onItemSelectListener ,并在每次选择项目时更改文本。

spinner.setOnItemSelectedListener(new OnItemSelectListener() {
   @Override
   public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
      // DO it here
   }

});

答案 1 :(得分:1)

你如何使用微调器的OnItemSelected事件?

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        // your code here
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {
        // your code here
    }

});

事情是,如果你打电话给performClick,微调器会弹出,但这个调用没有阻塞。因此,您需要OnItemSelectedListener来获取用户输入的异步响应。

getSelectedItem(打开微调器?)之后立即调用performClick将返回先前设置的元素 - 这是您正面临的错误。