2014-04-10 2 views
0

Ниже я прикрепил свой код для попытки добавить свой строковый массив, имена, в spinner в качестве параметров. На данный момент я не получаю ничего, заполняющего массив, и я действительно не уверен, что я делаю неправильно. Я просмотрел другие подобные вопросы на этом сайте, а также с помощью Google, и вышел пустым. Может ли кто-нибудь дать мне руководство? БлагодаряAndroid заполняет счетчик строковым массивом

public class RunesActivity extends Activity { 

    public static String page; 
    TextView textName; 
    Spinner spinner; 
    ArrayAdapter<String> adapter; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.rune_activity); 
     GetRunes getRunes = new GetRunes(); 
     getRunes.execute(); 
     spinner = (Spinner) findViewById(R.id.rune_selector); 
    } 

    public void addListenerOnSpinnerSelection() { 
     spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
       ((TextView) adapterView.getChildAt(0)).setTextColor(Color.parseColor("#C49246")); 
       Toast.makeText(adapterView.getContext(), 
         "Page Selected: " + adapterView.getItemAtPosition(i).toString(), 
         Toast.LENGTH_SHORT).show(); 

       page = adapterView.getItemAtPosition(i).toString(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> adapterView) { 

      } 
     }); 
    } 
    class GetRunes extends AsyncTask<String, String, JSONObject> { 

     private String api_key="d96236d2-6ee3-4cfd-afa7-f41bdbc11128"; 
     String region = MainActivity.region.toLowerCase(); 
     String id = StatsActivity.sumID; 
     String encodedKey = null; 
     String encodedRegion = null; 
     String encodedId = null; 
     String url = null; 


     // JSON Node Names 
     String TAG_NAME = "name"; 
     String TAG_CURRENT = "current"; 
     String TAG_SLOTS = "slots"; 
     String TAG_RUNEID = "runeId"; 
     String TAG_RUNESLOTID = "runeSlotId"; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      try { 

       // Assign views 
       textName = (TextView) findViewById(R.id.name); 

       // Encode URL variables 
       encodedId = URLEncoder.encode(id, "UTF-8"); 
       encodedKey = URLEncoder.encode(api_key, "UTF-8"); 
       encodedRegion = URLEncoder.encode(region, "UTF-8"); 

       url = "http://prod.api.pvp.net/api/lol/" + region + "/v1.4/summoner/" + id + "/runes?api_key=" + api_key; 
       Log.i("..........", url); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 

     } 

     @Override 
     protected JSONObject doInBackground(String... arg0) { 
      JSONParser jParser = new JSONParser(); 

      // Get JSON from URL 
      JSONObject json = jParser.getJSONFromUrl(url); 
      Log.i("............", "" + json); 
      return json; 
     } 

     @Override 
     protected void onPostExecute(JSONObject json) { 
      try { 
       // Get JSON Object 
       JSONObject runes = json.getJSONObject(encodedId); 

       // Get JSON Array node 
       JSONArray rune = runes.getJSONArray("pages"); 

       // Loop through pages, page names stored in string array 
       String[] name = new String[rune.length()]; 
       String curr; 
       ArrayList<String> runePageNames = new ArrayList<String>(); 

       for(int i = 0; i < rune.length(); i++) { 
        JSONObject c = rune.getJSONObject(i); 
        name[i] = c.getString(TAG_NAME); 
        curr = c.getString(TAG_CURRENT); 

        if(curr.equals("true")) 
         name[i] = name[i] + " [Active]"; 
        runePageNames.add(name[i]); 

        Log.i(".........", name[i]); 
       } 

       adapter = new ArrayAdapter(RunesActivity.this, 
         android.R.layout.simple_spinner_dropdown_item, 
         runePageNames); 

       addListenerOnSpinnerSelection(); 

       // Set TextView 
       textName.setText(name[0]); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

ответ

0

Попробуйте это ..

перед вызовом метода addListenerOnSpinnerSelection(); набор адаптер для этой блесны.

adapter = new ArrayAdapter(RunesActivity.this, 
        android.R.layout.simple_spinner_dropdown_item, 
        runePageNames); 
spinner.setAdapter(adapter); 
addListenerOnSpinnerSelection(); 
+0

Это сделало трюк. Огромное спасибо. – Nate

+0

@Nate Glad it Helped. Счастливое кодирование. – Hariharan

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