2016-11-10 4 views
1

ここでBookList.javaはbookとanother authorの2つの出現を維持するスピナークラスであり、どちらも独自のリストビュークラスを持っています。 OnItemSelected()メソッド内のケースを切り替えて、そのインテントにアクセスします。しかし、私が直面している問題は、本のための最初のリストビューのインテントがアクセスできないが、著者の意図にアクセスできるということです。誰かが自分のコードを編集する手助けをすれば助けになるでしょう。ここにJavaファイルがあります。スピナークラス内のスイッチケースでリストビューのアクティビティが正しく動作しない

  public class BookList extends Activity implements OnItemSelectedListener { 

       Spinner spinner; 
       //private static final String[]paths = {"Book", "Author"}; 
       @Override 
       protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_booklist); 
        TextView t =(TextView)findViewById(R.id.t1) ; 
        spinner = (Spinner)findViewById(R.id.spinner); 
        //ArrayAdapter<String>adapter = new ArrayAdapter<String>(BookList.this, 
          //android.R.layout.simple_spinner_item,paths); 
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.blist_array, android.R.layout.simple_spinner_item); 
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
        spinner.setAdapter(adapter); 
        adapter.notifyDataSetChanged(); 
        spinner.setOnItemSelectedListener(this); 

       } 

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

        final Intent intent; 
        switch (position) { 
         case 1: 
          intent = new Intent(BookList.this, BookListView.class); 
          startActivity(intent); 
          break; 
         case 2: 
          intent = new Intent(BookList.this, BookListAuthorView.class); 
          startActivity(intent); 
          break; 
        } 



       } 
       public void onNothingSelected(AdapterView<?> arg0) { 
        Toast.makeText(this, "Please choose a field", Toast.LENGTH_SHORT).show(); 

       } 

}

答えて

1

項目の位置はとてもために、このようなスピナー配列のものを作成1からので、あなたのアクティビティを開くこの

だから0の位置が自動的にトリガする最初の時間を使用しないで0から始まりますスピナー

String arr ={"select choice","book","author"}; 

   switch (position) { 
        case 1: 
         intent = new Intent(BookList.this, BookListView.class); 
         startActivity(intent); 
         break; 
        case 2: 
         intent = new Intent(BookList.this, BookListAuthorView.class); 
         startActivity(intent); 
         break; 
       } 

さらに、 `adapter.notifyDataSetChanged(); 'を呼び出す必要はありません。

+0

私はすでにこのケースを0と1に変更していますが、別の問題が発生してリストビューのアクティビティに直接アクセスし、ケースを選択できるスピンナーアクティビティクラスが表示されません。 – Israt

+0

あなたは2つのオプションを持っていますBookは 'BookListView'を開き、著者は' BookListAuthorView'を開きますあなたのスピナークラスはあなたが投稿した現在のコードです(あなたは見ることができません) –

+0

私は見ることができませんこれはBookList.javaクラスのスピナーです。オプションを選択しないと、BookListView.javaクラスに直接渡されます。なぜこれが起こっているのか分かりません。 – Israt

関連する問題