2016-09-01 54 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

在一定交代添加到接受的答案;设置适配器会将微调器重置为其列表中的第一项(因为它会重新遍历列表),因此您必须手动保存所选项并在交换适配器后恢复它。