0

こんにちは、次のコードがあります。これは、最初のスピナー - Poets から選択されたアイテムを取得し、入力詩 1、2、または 3 に応じて別のスピナーを表示することになっています。テキストビュー。

私の問題は、それが機能することもあれば、表示するスピナーをランダムに選択することもあり、スピナー2からアイテムを選択するたびに、テキストビューがほとんど表示されず、通常はツリーというタイトルのテキストビューになることです.

誰でも助けることができますか?エラーが表示されないので、混乱しています

コード:

public class Poets extends Activity implements  OnItemSelectedListener{

//defining variables
Spinner PoetSpinner, PoemSpinner1, PoemSpinner2, PoemSpinner3;
String Poets[] = {"","Robert Burns", "James Beattie", "Duncan MacGregor Crerar"};
String Poems1[] ={"", "Tam O Shanter", "Auld Lang Syne"};
String Poems2[] ={"", "Judgement Of Paris", "The Minstrel"};
String Poems3[] ={"", "A Poem Commemorating Robbie Burns", "My Bonnie Rowan Tree"};

TextView Tam, Auld, Judge, TheMin, rob, tree ;

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

    //set to fullscreen mode
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN );
    //set content view 
    setContentView(R.layout.poet);

    initialize(); //call this method
}

public void initialize(){

    //initializing items that are in the class
    PoetSpinner = (Spinner) findViewById(R.id.spPoet);
    PoemSpinner1 = (Spinner) findViewById(R.id.spPoem1);
    PoemSpinner2 = (Spinner) findViewById(R.id.spPoem2);
    PoemSpinner3 = (Spinner) findViewById(R.id.spPoem3);
    Tam = (TextView) findViewById(R.id.tvSelectPoem1);
    Auld = (TextView) findViewById(R.id.tvSelectPoem2);
    Judge = (TextView) findViewById(R.id.tvSelectPoem3);
    TheMin = (TextView) findViewById(R.id.tvSelectPoem4);
    rob = (TextView) findViewById(R.id.tvSelectPoem5);
    tree = (TextView) findViewById(R.id.tvSelectPoem6);
    //setting up array adapters
    //
    //for each spinner
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.poet_arrays, android.R.layout.simple_spinner_item);
    ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this, R.array.poem_arrays1, android.R.layout.simple_spinner_item);
    ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource(this, R.array.poem_arrays2, android.R.layout.simple_spinner_item);
    ArrayAdapter<CharSequence> adapter4 = ArrayAdapter.createFromResource(this, R.array.poem_arrays3, android.R.layout.simple_spinner_item);
    // Specify the layout to use when the list of choices appears
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    // Apply the adapter to the spinner
    PoetSpinner.setAdapter(adapter);
    PoetSpinner.setOnItemSelectedListener(this);

    PoemSpinner1.setAdapter(adapter2);
    PoemSpinner1.setOnItemSelectedListener(this);

    PoemSpinner2.setAdapter(adapter3);
    PoemSpinner2.setOnItemSelectedListener(this);

    PoemSpinner3.setAdapter(adapter4);
    PoemSpinner3.setOnItemSelectedListener(this);

}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

      String val = Poets[pos];
      String val2 = Poems1[pos];
      String val3 = Poems2[pos];
      String val4 = Poems3[pos];
       if (val.equals("Robert Burns")) {
          PoemSpinner2.setVisibility(Spinner.GONE);
          PoemSpinner1.setVisibility(Spinner.VISIBLE);
          PoemSpinner3.setVisibility(Spinner.GONE);
       }
       if (val.equals("James Beattie")) {
              PoemSpinner2.setVisibility(Spinner.VISIBLE);
              PoemSpinner1.setVisibility(Spinner.GONE);
              PoemSpinner3.setVisibility(Spinner.GONE);
           }
       if (val.equals("Duncan MacGregor Crerar")) {
            PoemSpinner2.setVisibility(Spinner.GONE);
            PoemSpinner1.setVisibility(Spinner.GONE);
            PoemSpinner3.setVisibility(Spinner.VISIBLE);
           }
       if (val2.equals("Tam O Shanter")) {
            Tam.setVisibility(View.VISIBLE);

            Auld.setVisibility(View.GONE);
            Judge.setVisibility(View.GONE);
            TheMin.setVisibility(View.GONE);
            tree.setVisibility(View.GONE);
            rob.setVisibility(View.GONE);
           }
       if (val2.equals("Auld Lang Syne")) {
            Auld.setVisibility(View.VISIBLE);

            Judge.setVisibility(View.GONE);
            TheMin.setVisibility(View.GONE);
            tree.setVisibility(View.GONE);
            Tam.setVisibility(View.GONE);
            rob.setVisibility(View.GONE);
           }
       if (val3.equals("Judgment Of Paris")) {
            Judge.setVisibility(View.VISIBLE);

            TheMin.setVisibility(View.GONE);
            tree.setVisibility(View.GONE);
            Tam.setVisibility(View.GONE);
            Auld.setVisibility(View.GONE);
            rob.setVisibility(View.GONE);
           }
       if (val3.equals("The Minstrel")) {
            TheMin.setVisibility(View.VISIBLE);

            tree.setVisibility(View.GONE);
            Tam.setVisibility(View.GONE);
            Auld.setVisibility(View.GONE);
            Judge.setVisibility(View.GONE);
            rob.setVisibility(View.GONE);
           }
       if (val4.equals("A Poem Commemorating Robbie Burns")) {
            rob.setVisibility(View.VISIBLE);

            tree.setVisibility(View.GONE);
            Tam.setVisibility(View.GONE);
            Auld.setVisibility(View.GONE);
            Judge.setVisibility(View.GONE);
            TheMin.setVisibility(View.GONE);
           }
       if (val4.equals("My Bonnie Rowan Tree")) 
            tree.setVisibility(View.VISIBLE);

            Tam.setVisibility(View.GONE);
            Auld.setVisibility(View.GONE);
            Judge.setVisibility(View.GONE);
            TheMin.setVisibility(View.GONE);
            rob.setVisibility(View.GONE);
           }


@Override
public void onNothingSelected(AdapterView<?> parent) {


}
}
4

1 に答える 1

1

物事を少し複雑にしすぎた気がします。2 つのスピナーと 1 つのテキストビューのみで、必要なものを作成できます。最初のスピナーには詩人が含まれ、このスピナーで選択された詩人に基づいて、選択した詩人の詩を持つことができる 2 番目のスピナーの内容を変更できます。次に、2 番目のスピナーで詩が選択されたときに、選択した詩の名前をテキストビューに表示できます。私はこのようなものを試してみます:

    public class Poets extends Activity implements
OnItemSelectedListener {

  // defining variables
  Spinner PoetSpinner, PoemSpinner;
  String Poets[] = { "", "Robert Burns", "James Beattie",
  "Duncan MacGregor Crerar" };
  String Poems1[] = { "", "Tam O Shanter", "Auld Lang Syne" };
  String Poems2[] = { "", "Judgement Of Paris", "The Minstrel" };
  String Poems3[] = { "", "A Poem Commemorating Robbie Burns",
  "My Bonnie Rowan Tree" };

  TextView selectedPoem;

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

    // set to fullscreen mode
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
      WindowManager.LayoutParams.FLAG_FULLSCREEN);
    // set content view
    setContentView(R.layout.poet);

    initialize(); // call this method
  }

  public void initialize() {

    // initializing items that are in the class
    PoetSpinner = (Spinner) findViewById(R.id.spPoet);
    PoemSpinner = (Spinner) findViewById(R.id.spPoem);
    // Hide the second spinner
    PoemSpinner.setVisibility(View.GONE);
    selectedPoem = (TextView) findViewById(R.id.tvSelectPoem1);
    // setting up array adapters
    //
    // for each spinner
    ArrayAdapter<CharSequence> adapter = ArrayAdapter
    .createFromResource(this, R.array.poet_arrays,
      android.R.layout.simple_spinner_item);
    // Specify the layout to use when the list of choices appears
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    // Apply the adapter to the spinner
    PoetSpinner.setAdapter(adapter);
    PoetSpinner.setOnItemSelectedListener(this);

    PoemSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

      public void onItemSelected(AdapterView<?> parent, View view,
        int position, long id) {
        Object poem = parent.getItemAtPosition(position);
        selectedPoem.setText(poem.toString());
      }

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

      }
    });
  }

  public void onItemSelected(AdapterView<?> parent, View view, int pos,
    long id) {
    ArrayAdapter<CharSequence> adapter = null;
    switch (pos) {
      case 1:
      adapter = ArrayAdapter.createFromResource(this,
        R.array.poem_arrays1, android.R.layout.simple_spinner_item);
      break;
      case 2:
      adapter = ArrayAdapter.createFromResource(this,
        R.array.poem_arrays2, android.R.layout.simple_spinner_item);
      break;
      case 3:
      adapter = ArrayAdapter.createFromResource(this,
        R.array.poem_arrays3, android.R.layout.simple_spinner_item);
      break;
      default:
      // Hide the poem spinner
      PoemSpinner.setVisibility(View.GONE);
      break;
    }

    if (adapter != null) {
      // Set the poem spinners content and show the spinner
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      PoemSpinner.setAdapter(adapter);
      PoemSpinner.setVisibility(View.VISIBLE);
    }
  }

  public void onNothingSelected(AdapterView<?> parent) {

  }

}

もちろん、未使用のビューを xml から削除する必要があります。私が十分に明確であり、コードがあなたが望むように機能することを願っています。

于 2013-03-14T21:47:32.377 に答える