0

まず初心者です。私はスピナーを作成する方法の例を見てきました.2番目のスピナーのリストが最初のスピナーに依存し、3番目のスピナーリストが依存している複数のスピナーを作成する方法について、このサイトとインターネットを検索しました2次選考時に。しかし、どこにもチュートリアルや解決策が見つかりません。

これがどのように行われるかについて、誰かが助けてくれませんか(チュートリアルは素晴らしいでしょう:))

基本的に、Spinner1 のリストは「メーカー」であり、選択時に Spinner2 の「モデル」のリストを生成し、スピナー2 のモデルの選択から Spinner3 の「問題」のリストを生成します。

どんな助けでも素晴らしいでしょう、

ありがとうございます。

4

4 に答える 4

2

このデモには Two Spinner があり、動作します。

それでonItemSelected method you can check your fisrt,second,third spinner value and set as per your requires.

于 2012-06-08T17:39:09.507 に答える
0

onItemSelectedこれは、イベントを処理することで実行できます。データをデータベースまたは配列に保存でき、選択すると、特定のスピナーで特定の配列にデータを入力できます。

于 2012-06-08T17:42:00.823 に答える
0

これは私のアプリの1つ(実際には私が今までに書いた最初のアプリ)から直接のものなので、きれいではありませんが機能します

package com.skyesmechanical.OilProductionLogApp;

import android.app.Activity;
import android.app.AlertDialog;
import android.database.Cursor;
import android.database.SQLException;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Toast;

import java.io.IOException;

public class test extends Activity {

    /** Called when the activity is first created. */
    public String spinnerPipeLengthText = "";
    public String spinnerNaturalGasText = "";
    public String spinnerPropaneGasText = "";
    public Spinner spinnerPipeLength;
    public Spinner spinnerTypeGas;
    public Spinner spinnerSupplyPressure;
    public static Integer spinnerPipeLengthInt = 0;
    public static Integer spinnerTypeGasInt = 0;
    public static Integer spinnerPropaneGasInt = 0;
    public static Integer spinnerSupplyPressureInt = 0;
    public static Integer finalRow = 0;
    public boolean supplyPressureVisible = false;
    public boolean pipeLengthVisible = false;

    static TextView textViewSize15;
    static TextView textViewSize19;
    static TextView textViewSize25;
    static TextView textViewSize31;
    static TextView textViewSize37;
    static TextView textViewSize46;
    static TextView textViewSize62;
    static TextView textViewSupplyPressure;
    static TextView textViewSelectPipeLength;

    public static Integer baseTableRowNumber = 0;   
    public static Cursor cursorResult;
    // these to int's keep a false Toast message from appearing
    private int intSpinnerCountGas = 0;
    private int intSpinnerCountSupply = 0;
    private int intSpinnerCountLength = 0;
    private static final int NO_OF_EVENTS_GAS = 1;
    private static final int NO_OF_EVENTS_SUPPLY = 1;
    private static final int NO_OF_EVENTS_LENGTH = 1;

    @Override
    public void onCreate (Bundle state) { 
        super.onCreate(state);
        setContentView(R.layout.main);
        //check if app just started or is being restored from memory
        if (state != null )  { 
            //app is being restored from memory, not executed from scratch
            //initialize the fields to the last used;
            supplyPressureVisible = state.getBoolean("supplyPressureVisible");
            pipeLengthVisible = state.getBoolean("pipeLengthVisible");
            spinnerTypeGasInt = state.getInt("spinnerTypeGasInt");
            spinnerSupplyPressureInt = state.getInt("spinnerSupplyPressureInt");
            spinnerPipeLengthInt = state.getInt("spinnerPipeLengthInt");
            finalRow = state.getInt("finalRow");

            Toast.makeText(getApplicationContext(), "savedInstanceState != null", Toast.LENGTH_LONG).show();

        }  //end if
        // call doInBackground
        new LoadDataBaseTask().doInBackground();        


        mainProgram ();
    } // end onCreate

    // performs database query outside GUI thread
    private class LoadDataBaseTask extends AsyncTask<Object, Object, Cursor> {
        DataBaseHelper myDbHelper = new DataBaseHelper(CSSTPipeSizingActivity.this);
        // perform the database access
        @Override
        protected Cursor doInBackground (Object... params) {
            try {
                myDbHelper.createDataBase();
            } 
            catch (IOException ioe) {
                throw new Error("Unable to create database");
            }
            try {
                myDbHelper.openDataBase();
            }
            catch(SQLException sqle) {
                throw sqle;
            }
            return myDbHelper.getData(); 
        } // end method doInBackground

        // use the Cursor returned from the doInBackground method
        @Override
        protected void onPostExecute(Cursor result) {
            //myDbHelper.changeCursor(result); // set the adapter's Cursor
            myDbHelper.close();
        } // end method onPostExecute
    } // end class LoadDataBaseTask 

    public void mainProgram () {
        spinnerTypeGas = (Spinner) findViewById(R.id.spinnerTypeGas);
        spinnerSupplyPressure = (Spinner) findViewById(R.id.spinnerSupplyPressure);
        spinnerPipeLength = (Spinner) findViewById(R.id.spinnerPipeLength);

        spinnerSupplyPressure.setVisibility(View.INVISIBLE);
        textViewSelectPipeLength.setVisibility(View.INVISIBLE);
        spinnerPipeLength.setVisibility(View.INVISIBLE);

        if (supplyPressureVisible == true) spinnerSupplyPressure.setVisibility(View.VISIBLE);
            else spinnerSupplyPressure.setVisibility(View.INVISIBLE);
        if (pipeLengthVisible == true) spinnerPipeLength.setVisibility(View.VISIBLE);
            else spinnerPipeLength.setVisibility(View.INVISIBLE);

        //Sets up the spinnerTypeGas spinner
        ArrayAdapter<CharSequence> adapterTypeGas = ArrayAdapter.createFromResource(
                this, R.array.TypeGas, android.R.layout.simple_spinner_item);
        adapterTypeGas.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerTypeGas.setAdapter(adapterTypeGas);

        //Sets up the spinnerPipeLength spinner 
        ArrayAdapter<CharSequence> adapterPipeLength = ArrayAdapter.createFromResource(
                this, R.array.PipeLength, android.R.layout.simple_spinner_item);
        adapterPipeLength.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerPipeLength.setAdapter(adapterPipeLength);

        // Listens for changes in the selected item in each spinner 
        spinnerTypeGas.setOnItemSelectedListener(new GASOnItemSelectedListener());
        spinnerSupplyPressure.setOnItemSelectedListener(new SupplyOnItemSelectedListener());
        spinnerPipeLength.setOnItemSelectedListener(new MyOnItemSelectedListener());
    }  // end mainProgram

    public void SpinnerNatGas() {
        ArrayAdapter<CharSequence> adapterSupplyPressure = ArrayAdapter.createFromResource(
                this, R.array.NaturalGas, android.R.layout.simple_spinner_item);
        adapterSupplyPressure.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerSupplyPressure.setAdapter(adapterSupplyPressure);
        adapterSupplyPressure.notifyDataSetChanged();
    } // end SpinnerNatGAs ()

    public void SpinnerProGas () {
        ArrayAdapter<CharSequence> adapterSupplyPressure = ArrayAdapter.createFromResource(
                this, R.array.PropaneGas, android.R.layout.simple_spinner_item);
        adapterSupplyPressure.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerSupplyPressure.setAdapter(adapterSupplyPressure);
        adapterSupplyPressure.notifyDataSetChanged();
    } // end SpinnerProGAs ()

    public class GASOnItemSelectedListener implements OnItemSelectedListener {
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            // this prevents false firing of Toast messages 
            if (intSpinnerCountGas < NO_OF_EVENTS_GAS) {
                intSpinnerCountGas++;
            } // end if 
            else {                
                spinnerTypeGasInt = spinnerTypeGas.getSelectedItemPosition();
                if(spinnerTypeGasInt == 1) {
                    //populate spinnerSupplyPressure accordingly
                    SpinnerNatGas();
                } // end if
                else if(spinnerTypeGasInt == 2) {
                    //populate spinnerSupplyPressure accordingly
                    SpinnerProGas();
                } // end else if
                if (spinnerTypeGasInt != 0) {
                    spinnerSupplyPressure.setVisibility(View.VISIBLE);
                    textViewSupplyPressure.setVisibility(View.VISIBLE);
                    spinnerSupplyPressure.setSelection(0);
                    spinnerPipeLength.setSelection(0);
                    supplyPressureVisible = true;
                } // end else if
                else {
                    spinnerSupplyPressure.setVisibility(View.INVISIBLE);
                    textViewSupplyPressure.setVisibility(View.INVISIBLE);
                    textViewSelectPipeLength.setVisibility(View.INVISIBLE);
                    spinnerPipeLength.setVisibility(View.INVISIBLE);
                    supplyPressureVisible = false;
                    pipeLengthVisible = false;
                }// end else
            }// end if for false Toast message at app launch
        } // end onItemSelected

        public void onNothingSelected(AdapterView<?> arg0) {
                // nothing to do
        } // end onNothingSelected
    } // end class GASOnItemSelectedListener 

    public class SupplyOnItemSelectedListener implements OnItemSelectedListener {
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            // this prevents false firing of Toast messages 
            if (intSpinnerCountSupply < NO_OF_EVENTS_SUPPLY) {
                intSpinnerCountSupply++;
            } // end if 
            else {                
                spinnerSupplyPressureInt = spinnerSupplyPressure.getSelectedItemPosition();
                if (spinnerSupplyPressureInt != 0) {
                    textViewSelectPipeLength.setVisibility(View.VISIBLE);
                    spinnerPipeLength.setVisibility(View.VISIBLE);
                    pipeLengthVisible = true;
                    spinnerPipeLength.setSelection(0);
                } // end if
                else {
                    textViewSelectPipeLength.setVisibility(View.INVISIBLE);
                    spinnerPipeLength.setVisibility(View.INVISIBLE);
                    pipeLengthVisible = false;
                } // end else
            }// end if for false Toast message at app launch
        } // end onItemSelected

        public void onNothingSelected(AdapterView<?> arg0) {
                // nothing to do
        } // end onNothingSelected
    } // end class SupplyOnItemSelectedListener

    public class MyOnItemSelectedListener implements OnItemSelectedListener {
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            if (intSpinnerCountLength < NO_OF_EVENTS_LENGTH) {
                intSpinnerCountLength++;
            } // end if 
            else {
                // This also gives the Row to look in the database for the CFH
                baseTableRowNumber = 0;
                spinnerPipeLengthInt = spinnerPipeLength.getSelectedItemPosition();
                //spinnerPipeLengthText = spinnerPipeLength.getSelectedItem().toString();
                // calculates the base table row number and stores it in variable baseTableRowNumber
                if (spinnerTypeGasInt == 1) {// Natural Gas is selected
                    baseTableRowNumber = (spinnerSupplyPressureInt - 1) * 18;
                }
                else if (spinnerTypeGasInt == 2) { // Propane is selected
                    baseTableRowNumber = 198 + (spinnerSupplyPressureInt - 1) * 18;
                } // end else if
                showResults();
            } // end else for check if firing at inializing
        } // end onItemSelected

        public void onNothingSelected(AdapterView<?> arg0) {
            // nothing to do
        } // end onNothingSelected 
    } // end class MyOnItemSelectedListener

    public void showResults () {
        if (CSSTPipeSizingActivity.cursorResult != null) { 
            finalRow = (baseTableRowNumber + spinnerPipeLengthInt);
            if (finalRow < 0) {
                finalRow = 0;
            }
            if (finalRow == 0) {
                textViewSize15.setText(String.valueOf("0"));
                textViewSize19.setText(String.valueOf("0"));
                textViewSize25.setText(String.valueOf("0"));
                textViewSize31.setText(String.valueOf("0"));
                textViewSize37.setText(String.valueOf("0"));
                textViewSize46.setText(String.valueOf("0"));
                textViewSize62.setText(String.valueOf("0"));                
            } // end if
            else {
                cursorResult.moveToPosition(finalRow);
                textViewSize15.setText(String.valueOf(cursorResult.getInt(1)));
                textViewSize19.setText(String.valueOf(cursorResult.getInt(2)));
                textViewSize25.setText(String.valueOf(cursorResult.getInt(3)));
                textViewSize31.setText(String.valueOf(cursorResult.getInt(4)));
                textViewSize37.setText(String.valueOf(cursorResult.getInt(5)));
                textViewSize46.setText(String.valueOf(cursorResult.getInt(6)));
                textViewSize62.setText(String.valueOf(cursorResult.getInt(7)));
            } // end else 
        } // end if
    } //end showResults
} // end class CSSTPipeSizingActivity

mainProgram()メソッドの最初の3行で、3つのスピナーを宣言してから、それらにデータを入力し始めます。ユーザーがspinnerTypeGasから選択肢を選択すると、次のスピナー(spinnerSupplyPressure)が表示されます。次に、ユーザーがそのspinnerSupplyPressureからアイテムを選択すると、3番目のスピナー(spinnerPipeLenght)が表示されます。次に、データベースから取得したデータが表示されます。各スピナーは、string.xmlファイルから配列リストを取得します

于 2012-07-27T21:32:22.563 に答える