2015-01-06 2 views
1

Здравствуйте, у меня есть счетчик, заполненный запросом JSON/PHP для Mysql. Это работает, но Spinner не показывает при загрузке приложения, и когда я нажимаю на spinner, я могу видеть значения, но если я выберу значение, оно не отобразит выбранное значение.Spinner не отображает выбранный элемент или по умолчанию

items.add("Choose Island"); 
//Get data from Database using JSON and Populate spinner 
    new DownloadJSONAsync().execute(); 
    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, items); 
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    // attaching data adapter to spinner 
    Island.setAdapter(spinnerAdapter); 

Island.setOnItemSelectedListener(new OnItemSelectedListener(){ 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, 
       int position, long id) { 
      CIsland=Island.getSelectedItemPosition(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
      // TODO Auto-generated method stub 
     } 
    }); 

Класс:

public class DownloadJSONAsync extends AsyncTask<String,Void,Boolean>{ 
    private ProgressDialog pDialog; 
    @Override 
    protected void onPreExecute(){ 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(MainActivity.this); 
     pDialog.setMessage("Getting Data ..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 
    @Override 
    protected Boolean doInBackground(String... params) { 
     try{ 
      JSONObject jObj = new JSONObject(getJSONUrl(URL_ISLANDS)); 
      JSONArray data = jObj.getJSONArray("Islands"); 
      for(int i=0; i < data.length(); i++){ 
       JSONObject c = data.getJSONObject(i); 
       Country = new HashMap<Integer, String>(); 
       Country.put(c.getInt("CountryID"), c.getString("Country")); 
       String ListItem = c.getString("Country"); 
       items.add(ListItem); 
      } 
      return true; 
     }catch(JSONException e){ 
      e.printStackTrace(); 
     }   
     return false; 
    } 

    @Override 
    protected void onPostExecute(Boolean result){ 
    super.onPostExecute(result); 
    if(result==false){ 
     pDialog.setMessage("Could not get data"); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 
    else{ 
     pDialog.dismiss(); 
    } 
    } 
} 

layout.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" 
android:background="#0404B4" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.cadushideals.MainActivity" > 

<TextView 
    android:id="@+id/lblTitle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="12dp" 
    android:text="Company Add" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="#FFFFFF" 
    android:textStyle="bold" /> 

<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@+id/lblTitle"> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/lblTitle" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="20dp" 
    android:background="#FFFFFF" 
    android:ems="10" 
    android:hint="Enter Company Name" 
    android:inputType="text" /> 

<EditText 
    android:id="@+id/editText2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/editText1" 
    android:layout_below="@+id/editText1" 
    android:layout_marginTop="15dp" 
    android:background="#FFFFFF" 
    android:ems="10" 
    android:hint="Enter Description" 
    android:inputType="textMultiLine" /> 

<EditText 
    android:id="@+id/editText3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/editText2" 
    android:layout_below="@+id/editText2" 
    android:layout_marginTop="15dp" 
    android:background="#FFFFFF" 
    android:ems="10" 
    android:hint="Enter Email" 
    android:inputType="textEmailAddress" /> 

<EditText 
    android:id="@+id/editText4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/editText3" 
    android:layout_below="@+id/editText3" 
    android:layout_marginTop="15dp" 
    android:background="#FFFFFF" 
    android:ems="10" 
    android:hint="Enter Address" 
    android:inputType="text" /> 

<EditText 
    android:id="@+id/editText5" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/editText4" 
    android:layout_below="@+id/editText4" 
    android:layout_marginTop="15dp" 
    android:background="#FFFFFF" 
    android:ems="10" 
    android:hint="Enter Tel" 
    android:inputType="phone" /> 

<EditText 
    android:id="@+id/editText6" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/editText5" 
    android:layout_below="@+id/editText5" 
    android:layout_marginTop="15dp" 
    android:background="#FFFFFF" 
    android:ems="10" 
    android:hint="Enter Fax" 
    android:inputType="phone" /> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/editText6" 
    android:layout_below="@+id/editText6" 
    android:layout_marginTop="15dp" 
    android:text="Latitude" 
    android:textColor="#FFFFFF" 
    android:textStyle="bold" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView1" 
    android:layout_below="@+id/textView1" 
    android:layout_marginTop="15dp" 
    android:text="Longitude" 
    android:textColor="#FFFFFF" 
    android:textStyle="bold" /> 

<Spinner 
    android:id="@+id/spinner1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView2" 
    android:layout_alignRight="@+id/editText6" 
    android:layout_below="@+id/textView2" 
    android:layout_marginTop="15dp" /> 

<CheckBox 
    android:id="@+id/checkBox1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/spinner1" 
    android:layout_below="@+id/spinner1" 
    android:layout_marginTop="15dp" 
    android:background="#FFFFFF" 
    android:text="Company Valid" /> 

<CheckBox 
    android:id="@+id/checkBox2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/spinner1" 
    android:layout_below="@+id/checkBox1" 
    android:layout_marginTop="15dp" 
    android:background="#FFFFFF" 
    android:text="Tire Customer" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/spinner1" 
    android:layout_below="@+id/checkBox1" 
    android:layout_marginTop="15dp" 
    android:minWidth="50dip" 
    android:text="Add" /> 
</LinearLayout> 
</ScrollView> 

+0

Вы пробовали прочитать это? http://stackoverflow.com/questions/24504970/spinner-selection-not-working-android – Nothing

ответ

3

В "onPostExecute" вашего DownloadJSONAsync, вы хотели бы назвать "notifyDataSetChanged "на вашем spinnerAdapter. Кроме того, вы также можете позвонить «setSelection» в свой класс Spinner для получения нужного элемента. Надеюсь это поможет.

Примечание. Другой способ: вернуть ваш DownloadJSONAsync список строк. и в вашем postexecute, do spinnerAdapter.clear(). addAll (Items); (Это более чистый подход, и вам не придется звонить notifyDataSetChanged)

+0

Привет, спасибо за ответ, попробовал ваше предложение, но все тот же вопрос. Я добавил ссылку на скриншот того, что я испытываю, возможно, это даст лучшее понимание. – Kurt

+0

Удалили ли вы обновление через адаптер (см. Раздел примечаний) вместо обновления только элементов? – bond

+0

Пробовал это, но все равно: 'new DownloadJSONAsync(). Execute(); \t \t ArrayAdapter spinnerAdapter = новый ArrayAdapter (это android.R.layout.simple_spinner_item, пункты); \t \t spinnerAdapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item); \t \t spinnerAdapter.clear(); \t \t spinnerAdapter.addВсе (элементы); \t \t Island.setAdapter (spinnerAdapter); ' – Kurt

Смежные вопросы