0

スピナーを使用して、データベースを介してユーザー検索を実装しようとしています。

フリートとビークルがあります (フリートにはビークルが含まれます)。フリートのリストを 1 つのスピナーとして、ビークルのリストをもう 1 つのスピナーとして持っています。

デフォルトでは、フリートを「すべて」に設定し、ビークル 1 にすべてのビークルを表示するように設定します (これは現在のケースです)。ただし、フリートの入力が特定のもの、たとえば、フリート 1 に変更されると、ビークル スピナーが更新されます。それに応じて[これはSQLiteデータベース検索を介して実装されますが、問題はここにあるとは思いません]。

フリート スピナー データが変更されたときのリスナーを作成するにはどうすればよいですか?

vehicleSpinner = (Spinner) findViewById(R.id.vehicleSpinner); 
      String selected = (String)fleetSpinner.getSelectedItem();
      ArrayAdapter<String> adapter5 = null;
      if(selected == "All"){
          //show all vehicles
          adapter5 = new ArrayAdapter<String>(this, R.layout.sherlock_spinner_item, vehicleArrayListString);

  }else{
      String vehiclesInFleetQuery = "SELECT * FROM " + Database.TABLE_VEHICLE + " WHERE " + Database.COLUMN_FLEET + "='" + selected +"'";
      Log.i(TAG,"QUERY: "+ vehiclesInFleetQuery);
      Cursor cursor = Database.listOfVehiclesDesired(query);


        if(cursor.moveToFirst()){
            do {
             String addToList = cursor.getString(cursor.getColumnIndex(Database.COLUMN_VEHICLE_ID));
             vehicleArrayFleet.add(addToList);
            } while (cursor.moveToNext());
        }else{//error on fleet search, no vehicles in fleet
            vehicleArrayFleet = vehicleArrayListString;
            builderContinue.setMessage("Selected Fleet(" + selected + ") had zero associated vehicles").setTitle("Error").show();
        }


        if (cursor != null && !cursor.isClosed()) {
            System.out.println("Closed");
            cursor.close();
        }

       adapter5 = new ArrayAdapter<String>(this, R.layout.sherlock_spinner_item, vehicleArrayFleet);
  }


 adapter5.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
  vehicleSpinner.setAdapter(adapter5);
4

1 に答える 1

1

フリート スピナーの OnItemSelectedListener を設定する必要があります。http://start-jandroid.blogspot.com/2011/01/android-spinner-example.htmlで例を見つけることができます。フリート スピナーのリスナーから、ビークル スピナーの選択項目を設定できます。

于 2013-07-24T03:21:54.330 に答える