0

私はアンドロイドを勉強しています、そして私がする練習はこれです:あなたは相対的な州/資本を持つ5つのコンチネンタルを持っています。2 つのスピナーと une ボタンを使用してアクティビティを作成します。最初のスピナーから大陸を選択すると、2 番目のスピナーは相対的な大陸の状態のみを表示する必要があります。ボタンをクリックすると、ダイアログ ボックスが表示されます。 Continental: Selected Contiental; 状態:選択された状態; StateCapital: 州の首都。私はデータベースを使用したくありません (私は現時点ではダミーです) 助けてもらえますか? 配列を使用する方が簡単だと思います。

文字列xmlを作成します

<string name="Select_continent">Select Continent</string>
<string-array name="continent">
<item>Usa</item>
<item>Europe</item>
<item>Australia</item>
<item>Asia</item>
<item>Africa</item>
</string-array>

<string name="Select_state_usa">Select State</string>
<string-array name="Usa">
<item>Alabama</item>
<item>Ohio</item>
<item>Florida</item>
<item>...</item>

<string name="Select_state_eu">Select State</string>
<string-array name="Europe">
<item>Germany</item>
<item>Italy</item>
<item>England</item>
<item>...</item>

次に、main.xml を作成します。

<Spinner
android:id="@+id/spinner1"
android:layout_width="300dp"
android:layout_height="50dp"
android:entries="@array/continent"
android:prompt="@string/Select_continent"
android:gravity="center"
 />

<TextView
    android:id="@+id/TextView01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="   Select continent:"
    android:textColor="#000" />

<Spinner
    android:id="@+id/spinner2"
    android:layout_width="297dp"
    android:layout_height="50dp"
   />

そして、MyActivity.java を作成します

public class MyActivity extends Activity  {

private Spinner spinner1, spinner2;
private Button btnSubmit;
final Context context = this;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.Myactivity);
addItemsOnSpinner2();
addListenerOnButton();
addListenerOnSpinnerItemSelection();
}

//add items into spinner dynamically
public void addItemsOnSpinner2() {
spinner2 = (Spinner) findViewById(R.id.spinner2);
List<String> list = new ArrayList<String>();
list.add("Austria");
list.add("Italy"); 
list.add("Germany"); 
list.add("France");

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>
this,android.R.layout.simple_spinner_item,list);dataAdapter.setDropDownViewResource 
android.R.layout.simple_spinner_dropdown_item);spinner2.setAdapter(dataAdapter);

}
public void addListenerOnSpinnerItemSelection(){

spinner1 = (Spinner) findViewById(R.id.spinner1);
}

 //get the selected dropdown list value
public void addListenerOnButton() {

spinner1 = (Spinner) findViewById(R.id.spinner1);
spinner2 = (Spinner) findViewById(R.id.spinner2);

btnSubmit = (Button) findViewById(R.id.btnSubmit);
btnSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {AlertDialog.Builder alertDialogBuilder3 = new  AlertDialog.Builder
(context);
alertDialogBuilder3
.setTitle("Continent")
.setIcon(R.drawable.info)
.setMessage("Continent " + "\n " + String.valueOf (spinner1.getSelectedItem()) +
 "\n " + String.valueOf(spinner2.getSelectedItem()) +
"\nCapital : "  )
.setNeutralButton("Ok",null)
.create() // create one
.show();
}
});

}}

相対的な状態を大陸に追加するのを手伝ってくれませんか?

4

1 に答える 1

0

両方のスピナーを初期化し、大陸スピナーを設定しOnItemSelected()てリスナーを設定し、選択したアイテムの大文字と小文字を切り替え、ケースに応じて 2 番目のスピナーを設定します。

編集:

もちろん!ただし、私は現在タブレットを使用しているため、コードを配布する前にテストすることはできません.

public class MyClass extends Activity 
{

    ArrayList<String> continents; 
    ArrayList<String> statesOfContA; 
    ArrayList<String> statesOfContB;

    Spinner conts;
    Spinner states;

    Button btnShowToast;

    String continentValue;
    String stateValue;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        btnShowToast = (Button)findViewById(R.id.btnShow);

        continents = new ArrayList<String>();
        statesOfContA = new ArrayList<String>();
        statesOfContB = new ArrayList<String>();

        continents.add("Continent A");
        continents.add("Continent B");

        statesOfContA.add("State A");
        statesOfContA.add("State B");

        statesOfContB.add("State A");
        statesOfContB.add("State B");

        conts = (Spinner)findViewById(R.id.spConts);
        states = (Spinner)findViewById(R.id.spStates);

        ArrayAdapter<String> contAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, continents);
        conts.setAdapter(contAdapter);

        conts.setOnItemClickListener(new OnItemClickListener()
        {

            @Override
            public void onItemClick(AdapterView<?> parent, View v, int pos,
                long arg3)
            {
                ArrayAdapter<String> stateAdapter;
                String choice = parent.getItemAtPosition(pos).toString();
                continentValue = continents.getSelectedItem().toString();

                switch(choice)
                {
                    case "Continent A":
                        stateAdapter = new ArrayAdapter<String>(MyClass.this, android.R.layout.simple_spinner_item, statesOfContA);
                        states.setAdapter(stateAdapter);
                        break;
                    case "Continent B":
                        stateAdapter = new ArrayAdapter<String>(MyClass.this, android.R.layout.simple_spinner_item, statesOfContB);
                        states.setAdapter(stateAdapter);
                        break;
               }
               Toast t = Toast.makeText(getApplicationContext(), "Continent: " + continentValue + " State: " + stateValue, Toast.LENGTH_LONG;
               t.show();
           }

        });

    btnShowToast.setOnClickListener(new View.setOnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Toast t = Toast.makeText(getApplicationContext(), "Continent: " continentValue + " State: " + stateValue, Toast.LENGTH_LONG;
            t.show();
        }
    }
}
}

スペルミスにも注意してください!これでうまくいかない場合は、別の解決策を見つけることができるようにお知らせください:)

幸運を!

于 2013-07-30T13:19:12.280 に答える