2

私は周りをよく検索しましたが、答えが見つからないようです。メソッド onItemSelected が呼び出されていません。私のアクティビティの onCreate メソッドで紹介されているコードは次のとおりです。

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_trips);

    try {
    // if network present.. TODO

    // Load Devices
    deviceList = new ArrayList<Device>();
    DataAsyncTask loadDevices = new DataAsyncTask(0);
    loadDevices.execute(someUrl);
    List<Device> deviceListNames = deviceList;
    final ListView tripListView = (ListView)findViewById(R.id.trip_list);
    Spinner deviceSpinner = (Spinner) findViewById(R.id.select_device_spinner);
    ArrayAdapter<Device> deviceAdapter = new ArrayAdapter<Device>(this, android.R.layout.simple_spinner_dropdown_item, deviceListNames);
    deviceAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    deviceSpinner.setAdapter(deviceAdapter);
    OnItemSelectedListener spinnerListener = new OnItemSelectedListener() {


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

            Log.d(TAG, "select is: " + parent.getSelectedItem().toString());   

            DataAsyncTask loadTrips = new DataAsyncTask(1);
            loadTrips.execute(someUrl);
            ArrayAdapter<Trip> tripAdapter = new ArrayAdapter<Trip>(getApplication(),
                    android.R.layout.simple_list_item_1, tripList);
            tripListView.setAdapter(tripAdapter);
            tripListView.setOnItemClickListener(new OnItemClickListener() {

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

                    Log.d(TAG, parent.getSelectedItem().toString());

                    Intent intent = new Intent(getApplication(), TripSummary.class);
                    //put value of tripId to intent TODO
                    startActivity(intent);
                }

            });



         }

         @Override
         public void onNothingSelected(AdapterView<?> parent) {
               // TODO
               Log.d(TAG, "nothing selected");
         }

  };
    deviceSpinner.setOnItemSelectedListener(spinnerListener);
    } catch (Exception e){
        Log.e(TAG, e.getLocalizedMessage(), e);
    }

}

アクティビティのレイアウト xml は次のとおりです。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ViewTrips" >

<Spinner
    android:id="@+id/select_device_spinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:prompt="@string/select_device"
    android:layout_marginTop="5dp"
    android:layout_marginLeft="5dp"
    android:drawSelectorOnTop = "true" />

<ListView
    android:id="@+id/trip_list"
    android:layout_below="@id/select_device_spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/trips"
    android:clickable="true" />

</RelativeLayout>

値が取り込まれ、スピナーに正しく表示されます。deviceSpinner に設定されている OnItemSelectedListener() の onItemSelected メソッドに問題があります。このメソッドは、クリックするとユーザーが新しいアクティビティに移動する ListView にデータを入力することになっています。誰かが私が間違っていることを説明できますか?

また、アクティビティに OnItemSelectedListener を実装しようとしましたが、これも機能しません。

注: LogCat で報告するエラーはありません。

Log.d(TAG, "select is: " + parent.getSelectedItem().toString());

印刷していません。

ありがとう

4

0 に答える 0