12

私はアンドロイドに非常に慣れていません。アプリケーションで 2 つのスピナーを使用したいのですが、1 つは国のリストを表示し、国を選択すると、もう 1 つのスピナーはその国の都市のリストを表示する必要があります。都市が選択されると、何らかのアクションが実行されます。サンプルコードを教えてください。期待して感謝

4

4 に答える 4

10

これは、オプションを spinner2 wrt から spinner 1 に追加するために使用できるものです。

public class Activity extends Activity implements View.OnClickListener
{
    private Spinner spinner0, spinner1, spinner2, spinner3;
    private Button submit, cancel;

    private String country[], state[], city[], area[];

    Australia aus = new Australia();

    Object object;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        spinner0 = (Spinner)findViewById(R.id.spinnerCountry);
        spinner1 = (Spinner)findViewById(R.id.spinnerQ1);
        spinner2 = (Spinner)findViewById(R.id.spinnerQ2);
        spinner3 = (Spinner)findViewById(R.id.spinnerQ3);

        submit = (Button)findViewById(R.id.btnSubmit);
        cancel = (Button)findViewById(R.id.btnCancel);

        submit.setOnClickListener(this);
        cancel.setOnClickListener(this);

        country = new String[] {"Select Country", "Australia", "USA", "UK", "New Zealand", "EU", "Europe", "China", "Hong Kong",
                                "India", "Malaysia", "Canada", "International", "Asia", "Africa"};


        ArrayAdapter<String> adapter0 = new ArrayAdapter<String>(Activity.this, android.R.layout.simple_spinner_item, country);
        adapter0.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
        spinner0.setAdapter(adapter0);
        Log.i("AAA","spinner0");

        spinner0.setOnItemSelectedListener(new OnItemSelectedListener()
        {           
            @Override
            public void onItemSelected(AdapterView<?> arg0, View view1, int pos, long id)
            {
                Log.i("AAA","OnItemSelected");
                int loc;
                loc = pos;

                switch (loc)
                {
                case 1:

                    state = aus.getState();
                    object = aus;

                    Log.i("AAA","ArrayAdapter1");                   
                    ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(Activity.this, android.R.layout.simple_spinner_item, state);
                    adapter1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
                    spinner1.setAdapter(adapter1);          Log.i("AAA","spinner1");
                    break;

                default:
                    Log.i("AAA","default 0");
                    break;
                }                               
            }       

            @Override
            public void onNothingSelected(AdapterView<?> arg1)
            {
                Log.i("AAA","Nothing S0");

            }
        });

       spinner1.setOnItemSelectedListener(new OnItemSelectedListener()
       {
            @Override
            public void onItemSelected(AdapterView<?> arg0, View view1, int pos, long id) 
            {
                Log.i("AAA","OnItemSelected S1");
                int loc = pos;
                switch(loc)
                {
                    case 1:
                        Log.i("AAA","Australia");
                        if(object.equals(aus))
                        {
                            city = aus.getType(loc);
                        }
                        else
                        {
                            break;
                        }


                        ArrayAdapter<String> adapter = new ArrayAdapter<String>(Activity.this, android.R.layout.simple_spinner_item, city);
                        adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
                        spinner2.setAdapter(adapter);           Log.i("AAA","spinner2");
                        break;

                    default:
                            Log.i("AAA", "default 1");
                        break;

                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> arg0)
            {
                Log.i("AAA","Nothing S1");              
            }

        }); 

       spinner2.setOnItemSelectedListener(new OnItemSelectedListener()
       {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int pos, long id)
        {
            int loc = pos;
            switch (loc)
            {
            case 1:
                if(object.equals(aus))
                {
                    area = aus.getTitle(loc);
                }

                ArrayAdapter<String> adapter = new ArrayAdapter<String>(Activity.this, android.R.layout.simple_spinner_item, area);
                adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
                spinner3.setAdapter(adapter);           Log.i("","spinner3");               
                break;

            default:
                break;
            }

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) 
        {
            // TODO Auto-generated method stub          
        }
       });

    }// on-create


    @Override
    public void onClick(View v)
    {
        switch (v.getId())
        {
        case R.id.btnSubmit:

            break;

        case R.id.btnCancel:
            finish();
            break;

        default:
            break;
        }       
    }   
}

これが便利だと思ったら、他の人が良い答えを簡単に見つけられるように投票をやめてください。

国ごとに、都道府県、都市、地域を追加するためのクラスを作成する必要があります。1ページ1枚で網目状にならないように。

楽しむ。

よろしく、

ハプ。

于 2012-02-27T13:28:11.400 に答える
3

スピナーの使用方法とスピナーアイテムが選択されたときに実行されるアクションを示すサンプルコードを次に示します。

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;

public class MainActivity extends Activity {

    Spinner spin;
    String spin_val;
    String[] gender = { "Male", "Female" };//array of strings used to populate the spinner
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);//setting layout
        spin = (Spinner) findViewById(R.id.spinner_id);//fetching view's id
        //Register a callback to be invoked when an item in this AdapterView has been selected
        spin.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int position, long id) { 
                // TODO Auto-generated method stub
                spin_val = gender[position];//saving the value selected


            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }

        });
      //setting array adaptors to spinners 
      //ArrayAdapter is a BaseAdapter that is backed by an array of arbitrary objects
        ArrayAdapter<String> spin_adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, gender);

        // setting adapteers to spinners
        spin.setAdapter(spin_adapter);
    }


}

To add a list of values to the spinner, you need to specify a SpinnerAdapter in your Activity, which extends Adapter class.. スピナー アダプターでは、2 つの異なるビューを定義できます。1 つはスピナー自体のデータを表示し、もう 1 つは表示しますスピナーが押されたときのドロップダウン リストのデータ。理解を深めるために、完全なspinner_demoサンプル プロジェクトをダウンロードして参照することもできます。

于 2012-10-20T10:41:44.167 に答える
3

次の例を確認してください。

https://developer.android.com/guide/tutorials/views/hello-spinner.html
http://www.designerandroid.com/?cat=4

于 2010-03-08T09:58:05.340 に答える