2016-09-01 103 views
0

我的應用由兩個紡紗器和一個按鈕組成,我從每個紡紗器中選擇了每個值,稍後我使用按鈕單擊交換了紡紗器適配器,當紡紗器適配器被修改時,默認結果代表初始值,不管我給出的價值如何。交換紡紗器

這是我MainActivity的樣子

public class MainActivity extends AppCompatActivity { 

private Spinner alphabets, numbers; 
private Button swapSpinners; 
private ArrayAdapter<CharSequence> alphabetsAdapter, numbersAdapter; 

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

    alphabets = (Spinner) findViewById(R.id.alphabets); 
    numbers = (Spinner) findViewById(R.id.numbers); 
    swapSpinners = (Button) findViewById(R.id.swapSpinner); 


    alphabetsAdapter = ArrayAdapter.createFromResource(this, 
      R.array.alphabets, android.R.layout.simple_spinner_item); 
    alphabetsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    alphabets.setAdapter(alphabetsAdapter); 

    numbersAdapter = ArrayAdapter.createFromResource(this, 
      R.array.numbers, android.R.layout.simple_spinner_item); 
    numbersAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    numbers.setAdapter(numbersAdapter); 

    swapSpinners.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (alphabets.getAdapter().equals(alphabetsAdapter)) { 
       alphabets.setAdapter(numbersAdapter); 
       numbers.setAdapter(alphabetsAdapter); 
      } else { 
       alphabets.setAdapter(alphabetsAdapter); 
       numbers.setAdapter(numbersAdapter); 
      } 
     } 
    });} 
} 

這是我activity_main的樣子

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="karthik.spinnerswap.MainActivity"> 

<Spinner 
    android:id="@+id/alphabets" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 
<Button 
    android:id="@+id/swapSpinner" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/alphabets" 
    android:text="Swap Spinners" /> 
<Spinner 
    android:id="@+id/numbers" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/swapSpinner" /> 
    </RelativeLayout> 

這是我的strings.xml的樣子

<resources> 
<string name="app_name">SpinnerSwap</string> 

<string-array name="alphabets"> 
    <item>A</item> 
    <item>B</item> 
    <item>C</item> 
    <item>D</item> 
    <item>E</item> 
    <item>F</item> 
    <item>G</item> 
    <item>H</item> 
    <item>I</item> 
    <item>J</item> 
</string-array> 

<string-array name="numbers"> 
    <item>0</item> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
    <item>4</item> 
    <item>5</item> 
    <item>6</item> 
    <item>7</item> 
    <item>8</item> 
    <item>9</item> 
</string-array> 

選擇值,交換 after swapping

交換後的紡紗 before swapping

紡紗之前,我需要顯示選擇的值調換紡織

回答

1

使用它可以解決您的問題。

swapSpinners.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      int positionSpinner1 = alphabets.getSelectedItemPosition() ; 
      int positionSpinner2 = numbers.getSelectedItemPosition() ; 
      if (alphabets.getAdapter().equals(alphabetsAdapter)) { 
      alphabets.setAdapter(numbersAdapter); 
      numbers.setAdapter(alphabetsAdapter); 
      } else { 
      alphabets.setAdapter(alphabetsAdapter); 
      numbers.setAdapter(numbersAdapter); 
      } 
      alphabets.setSelection(positionSpinner2); 
      numbers.setSelection(positionSpinner1); 
     } 
    }); 

注: - 使用INT位置互換他們的價值觀.....

+0

謝謝@sushildlh,你的代碼工作像一個魅力:) – Karthik

+0

歡迎您..... :) – sushildlh

0

在一定交代添加到接受的答案;設置適配器會將微調器重置爲其列表中的第一項(因爲它會重新遍歷列表),因此您必須手動保存所選項並在交換適配器後恢復它。