2016-04-03 11 views
2

我是新來的android和想知道如何可以在頁面上有4個紡紗器,但依賴於對方的價值。我試圖做到這一點,當你選擇第一個值的時候,例如第二個微調器的值可能會改變,但是我需要第三個微調器取決於第二個微調器的值,並且與第四個微調器的值相同取決於第三個微調器的價值(因爲我有這麼多的可能性)。我的佈局設置正確,我只是無法讓我的主類中的代碼正常工作。如何使4個紡絲器相互依賴的價值

我也有類似的我發現,介紹瞭如何使用2個紡紗做在線,但我需要它有4

package com.bar.example.androidspinnerexample; 
 
    
 
import java.util.ArrayList; 
 
import java.util.List; 
 
    
 
import android.app.Activity; 
 
import android.os.Bundle; 
 
import android.view.View; 
 
import android.widget.AdapterView; 
 
import android.widget.ArrayAdapter; 
 
import android.widget.Spinner; 
 
import android.widget.AdapterView.OnItemSelectedListener; 
 
import android.widget.Toast; 
 
    
 
public class SpinnerEx4Activity extends Activity implements 
 
OnItemSelectedListener{ 
 
Spinner s1,s2; 
 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     // TODO Auto-generated method stub 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_spinner_ex4); 
 
     s1 = (Spinner)findViewById(R.id.spinner1); 
 
     s2 = (Spinner)findViewById(R.id.spinner2); 
 
     s1.setOnItemSelectedListener(this); 
 
    } 
 
    @Override 
 
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
 
      long arg3) { 
 
     // TODO Auto-generated method stub 
 
     String sp1= String.valueOf(s1.getSelectedItem()); 
 
     Toast.makeText(this, sp1, Toast.LENGTH_SHORT).show(); 
 
     if(sp1.contentEquals("Income")) { 
 
      List<String> list = new ArrayList<String>(); 
 
      list.add("Salary"); 
 
      list.add("Sales"); 
 
      list.add("Others"); 
 
      ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
 
       android.R.layout.simple_spinner_item, list); 
 
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
 
      dataAdapter.notifyDataSetChanged(); 
 
      s2.setAdapter(dataAdapter); 
 
     } 
 
     if(sp1.contentEquals("Expense")) { 
 
      List<String> list = new ArrayList<String>(); 
 
      list.add("Conveyance"); 
 
      list.add("Breakfast"); 
 
      list.add("Purchase"); 
 
      ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(this, 
 
       android.R.layout.simple_spinner_item, list); 
 
      dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
 
      dataAdapter2.notifyDataSetChanged(); 
 
      s2.setAdapter(dataAdapter2); 
 
     } 
 
      
 
    } 
 
    @Override 
 
    public void onNothingSelected(AdapterView<?> arg0) { 
 
     // TODO Auto-generated method stub 
 
      
 
    } 
 
}

如果有誰能夠告訴我的4爲例東西那些很棒的紡紗者。提前致謝!

+0

堆棧段僅用於HTML/CSS/JS – Laurel

回答

2

首先初始化四位紡紗:

s1 = (Spinner)findViewById(R.id.spinner1); 
s2 = (Spinner)findViewById(R.id.spinner2); 
s3 = (Spinner)findViewById(R.id.spinner3); 
s4 = (Spinner)findViewById(R.id.spinner4); 

然後設置監聽器:

s1.setOnItemSelectedListener(this); 
s2.setOnItemSelectedListener(this); 
s3.setOnItemSelectedListener(this); 
s4.setOnItemSelectedListener(this); 

和實現onItemSelected方法,像下面:

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    int spinnerId = view.getId(); 
    switch(spinnerId) { 
     case R.id.spinner1: 
      // do spinner 1 stuff 
      // spinner 1 has changed update spinner 2 here 
      break; 
     case R.id.spinner2: 
      // do spinner 2 stuff 
      // spinner 2 has changed update spinner 3 here 
      break; 
     case R.id.spinner3: 
      // do spinner 3 stuff 
      // spinner 3 has changed update spinner 4 here 
      break; 
     case R.id.spinner4: 
      // do spinner 4 stuff 
      break; 
    } 
}