2013-02-27 23 views
8

İşte kod:Android çağrıldığını değil Spinner, onItemSelected (...)

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 sınıfı:

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); 
} 
} 

Etkinlik düzeni xml: Ben

<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> 

Bu düzgün çalışıyor almak için bekliyorum, o zaman DeviceAdapter daha da özelleştirmek için gidiyorum. Activity implements OnItemSelectedListener

, tüm çağrılan değildir onItemSelected(...) dolayısıyla geçersiz kılma. LogCat'da hata yok. Spinner, Aktivitenin düzeninde (xml) tanımlanır ve iyi görüntülenir ve doldurulur. Bu düzeltmek için herhangi bir tavsiye büyük olurdu.

Teşekkür ederiz.

+1

denilen onNothingSelected edilir? – njzk2

+0

'yakalama (İstisna e)' çok kötü bir uygulamadır. Bunu kaldırabilir ve tekrar deneyebilir misiniz? – m0skit0

+0

Ben try/catch, aynı sorun kaldırdık ve onNothingSelected ben aynı sorun var ya – user1610177

cevap

5

Ben size adaptörü için bir açılır görünümünü ayarlamak vermedi görebilirsiniz spinner düzenleri olabilir. böyle senin spinner başlatmak için deneyebilir misiniz:

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); 
+0

seçildiğinde eğiren görünümünde olduğu gibi, ancak yine de onItemSelected (bir küçük şeyler – user1610177

+0

evet, sadece (super.getView kullanarak gerekiyorsa? ArrayAdapter en GetView() yöntemini geçersiz mı çağrılmaz geliştirdi Yani) Bu sizin için bir neden olmadığından emin olmak için testiniz için BTW - onItemSelected varsayılan ArrayAdapter'ı kullanırken çağrılıyor mu? – GTware

+0

getView() yöntemini geçersiz kılmadım ve varsayılan ArrayAdapter kullanırken onItemSelected çağrılmıyor (Kendi oluşturduğumun temel sebebi: – user1610177

İlgili konular