Android - Spinner, onItemSelected (...) not called

Here is the code:

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.json.JSONArray; import org.json.JSONObject; import com.project.locationapp.model.Device; import android.os.AsyncTask; import android.os.Bundle; import android.provider.Settings.Secure; import android.app.Activity; import android.content.Intent; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; public class SelectDevice extends Activity implements OnItemSelectedListener { private Spinner deviceSpinner; private List<Device> deviceList; private ArrayAdapter<Device> deviceAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_select_device); deviceList = new ArrayList<Device>(); try { deviceSpinner = (Spinner) findViewById(R.id.select_device_spinner); deviceAdapter = new DeviceAdapter(this, android.R.layout.simple_spinner_dropdown_item, deviceList); deviceSpinner.setAdapter(deviceAdapter); deviceSpinner.setOnItemSelectedListener(this); DataAsyncTask loadDevices = new DataAsyncTask(); loadDevices.execute(new String[] { WebServiceURL.WEB_SERVICE + WebServiceURL.DEVICES + WebServiceURL.ALL }); } catch (Exception e){ Log.e(TAG, e.getLocalizedMessage(), e); } } @Override public void onItemSelected(AdapterView<?> a, View v, int position, long id) { Log.d(TAG, "called!"); Intent intent = new Intent(this, ViewTrips.class); intent.putExtra("device_id", deviceAdapter.getItem(position).getId()); startActivity(intent); } } 

DeviceAdapter Class:

 import java.util.List; import com.project.locationapp.model.Device; import android.content.Context; import android.widget.ArrayAdapter; public class DeviceAdapter extends ArrayAdapter<Device> { public DeviceAdapter(Context context, int textViewResourceId, List<Device> objects) { super(context, textViewResourceId, objects); } } 

Xml action layout:

 <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=".SelectDevice" > <TextView android:id="@+id/instructions_device_select" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:text="@string/select_device_instructions" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:layout_marginRight="15dp" android:layout_marginLeft="15dp" /> <Button android:id="@+id/start_service_button" android:layout_below="@id/instructions_device_select" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="thisDevice" android:text="@string/this_device" android:layout_marginTop="10dp" android:layout_marginRight="40dp" android:layout_marginLeft="40dp" /> <Spinner android:id="@+id/select_device_spinner" android:layout_below="@id/start_service_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:prompt="@string/select_device" android:layout_marginTop="20dp" android:layout_marginLeft="5dp" android:drawSelectorOnTop = "true" /> </RelativeLayout> 

I'm waiting for this to work fine, and I will configure the DeviceAdapter again.

Activity implements OnItemSelectedListener , therefore, an override of onItemSelected(...) , which is not called at all. There LogCat no errors in LogCat . Spinner defined in the xml action layout and displayed and filled with a fine. Any advice to fix this would be great.

Thanks.

+8
android spinner
source share
1 answer

These may be spinner layouts, I see that you have not installed a drop-down list for the adapter. Could you try to initialize your counter as follows:

 deviceAdapter = new DeviceAdapter(this, android.R.layout.simple_spinner_item, deviceList); deviceSpinner.setAdapter(deviceAdapter); deviceSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); deviceSpinner.setOnItemSelectedListener(this); 
+5
source share

All Articles