【问题标题】:Passing a spinner selected value to another value将微调器选定值传递给另一个值
【发布时间】:2013-06-13 00:08:01
【问题描述】:

一旦从微调器中选择了一个值,我希望让另一个值列表从所做的选择中填充微调器。例如:当用户单击微调器时,会出现值“主队、主队、主队其他”。用户单击其中之一,然后与该选择相关的玩家然后填充微调器。下面是填充的原始微调器的代码。

public class ExampleMain extends Activity {

        JSONArray jsonArray = null;
        JSONArray str_login = null;
        public String kode;
        public String Team_Name;
        public String Home_team;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
            setContentView(R.layout.main);  

            JSONParser jParser = new JSONParser();
            String link_url = "http://10.0.2.2/NPD/P_name.php";
            JSONObject json = jParser.FunctionParser(link_url);
            Spinner d11 = (Spinner)findViewById(R.id.doubles11);
            Spinner d12 = (Spinner)findViewById(R.id.doubles12);
            Spinner d21 = (Spinner)findViewById(R.id.doubles21);
            Spinner d22 = (Spinner)findViewById(R.id.doubles22);
            Spinner d31 = (Spinner)findViewById(R.id.doubles31);
            Spinner d32 = (Spinner)findViewById(R.id.doubles32);


                try {
                        jsonArray = json.getJSONArray("team");
                        final String[] items = new String[jsonArray.length()];
                        for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject jsonObject = jsonArray.getJSONObject(i);           
                        items[i]=jsonObject.getString("P_name");
                        }

           ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, 
                   android.R.layout.simple_spinner_item, items);      
           adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
           d11.setAdapter(adapter);


           adapter = new ArrayAdapter<String>(
                    this,android.R.layout.simple_spinner_item, items);
           adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
           d12.setAdapter(adapter);

           adapter = new ArrayAdapter<String>(
                   this,android.R.layout.simple_spinner_item, items);
           adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
           d21.setAdapter(adapter);

           adapter = new ArrayAdapter<String>(
                   this,android.R.layout.simple_spinner_item, items);
           adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
           d22.setAdapter(adapter);

           adapter = new ArrayAdapter<String>(
                   this,android.R.layout.simple_spinner_item, items);
           adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
           d31.setAdapter(adapter);

           adapter = new ArrayAdapter<String>(
                   this,android.R.layout.simple_spinner_item, items);
           adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
           d32.setAdapter(adapter);




                } catch (JSONException e) {
                        e.printStackTrace();
                }

谢谢。

【问题讨论】:

  • 到目前为止你取得了什么成就?
  • 您必须接受答案。不要成为那种人中的一员。

标签: android json spinner android-spinner


【解决方案1】:

你需要使用OnItemSelectedListener

d11.setOnItemSelectedListener(this);

    @Override
    public void onItemSelected(AdapterView<?> spinner, View view, int position,long arg3)
    {
         item = spinner.getItemAtPosition(position).toString();
    }

     public void onNothingSelected(AdapterView parent) {
    // Do nothing.
    }

现在您将拥有自己的价值,您可以在需要填充其他Spinners 的任何地方使用它。在此示例中将item 设为成员变量,以便您可以在此Activity 中的任何位置使用它。您还需要将implements OnItemSelectedListener 添加到您的类定义中

public class ExampleMain extends Activity implements OnItemSelectedListener{

此外,您正在使用看起来相同的值多次初始化adapter。只需初始化一次,然后将您的Adapters 设置为您的Spinners

【讨论】:

  • 我正在寻找新数据来填充同一个微调器。本质上,一旦单击第一个值,该数据就会被清除,并且与 clicked 变量关联的玩家现在会填充微调器。这个可以吗?
  • 是的,只需更改适配器以在您选择项目时使用不同的列表
  • 要么更改适配器并调用setAdapter(yourNewAdapter),要么更改列表中的值并在旧的adapter上调用notifyDataSetChanged()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
相关资源
最近更新 更多