Получение идентификатора из JSON-объектов внутри onItemClickListener

Прежде всего я использую библиотеку залпа для моего почтового запроса. В этом случае я получаю в ответ от сервера следующий формат json.

{"status":"success","message":"Teams without a league have been   
 found.",
 "teams":[{"ID":"31","team_name":"A Team"},
          {"ID":"101","team_name":"The BEST team"},
          {"ID":"109","team_name":"ael fc"},
          {"ID":"110","team_name":"UK"},
          {"ID":"111","team_name":"cyprus"},              
          {"ID":"112","team_name":"biochemisty"}
          ]
}

Я делаю всю необходимую десериализацию JSON и отображаю объекты массива команды в списке.

Теперь я хочу сохранить в массиве String значения идентификаторов выбранных команд. Есть идеи по этому поводу?

Вот часть кода

final JsonObjectRequest jsonObjReq1 = new  
JsonObjectRequest(AppConfig.URL_GET_ALL_LEAGUE_TEAMS, jsonObject,
            new com.android.volley.Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    Log.d("TAG", response.toString());

                        try {

           if(response.getString("status").equals("success")){

           JSONArray teamsArray = response.getJSONArray("teams");


                       for(int i = 0; i< teamsArray.length(); i++){

                                 teams = teamsArray.getJSONObject(i);

                                 noLeagueMembersClass = new 
                      NoLeagueMemberClass();              
              noLeagueMembersClass.
              setTeamMember(teams.getString("team_name"));

               noLeagueMembersClass.
              setTeamMember(teams.getString("ID"));                      
              noLeagueMemberList.add(noLeagueMembersClass);
                                 listView.setAdapter(noLeagueAdapter);

              listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
                                 listView.setItemsCanFocus(false);

                                 listView.setOnItemClickListener(new 
              AdapterView.OnItemClickListener() {
              @Override
              public void onItemClick
             (AdapterView<?> parent, View view, int position, long id){

             Toast.makeText(getApplicationContext(),"You 
             clicked"+position,Toast.LENGTH_SHORT).show();

                                     }
                                 });
           }



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

Я пробую следующее

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

                                         try {

                                             final String teamId = 
                                             teams.getString("ID");
                                             Log.d("teamId",teamId);
                                         } catch (JSONException e) {
                                             e.printStackTrace();
                                         }

                                     }

но я всегда получаю teamId=120. Например, когда я выбираю первую строку, я хочу, чтобы teamId был равен 31. Когда я щелкаю по второй строке, я хочу, чтобы teamId был равен 101, и так далее. Я не хочу передавать какие-либо значения в следующий вид деятельности. Я надеюсь, что следующая картина поможет вам понять, что я хочу сделать.

Другими словами, я хочу, чтобы каждый клик соответствовал таблице JSON.

2 ответа

{"DDL":[{"Идентификатор":1,"название": "Аруба"}, { "Идентификатор":2,"название": "Афганистан"}, { "Идентификатор":3,"название":" Ангола "}, {" Идентификатор ":4," название ":" Ангилья "}, {" Идентификатор ":5," название ":" Албания "}, {" Идентификатор ":6," название ":" Андорра"}]}

Приведенный выше код показывает массив Json, а DDL - имя тега массива json.

// Страна Spinner

private void getCountry(){

    StringRequest stringRequest = new StringRequest(Request.Method.GET,"URL",
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    try {



                        //Parsing the fetched Json String to JSON Object
                        JSONObject j = new JSONObject(response);

                        //Storing the Array of JSON String to our JSON Array
                        countryarray = j.getJSONArray("DDL");

                        //Calling method getStudents to get the students from the JSON Array
                        getCountries(countryarray);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });

    //Creating a request queue
    RequestQueue requestQueue = Volley.newRequestQueue(this);

    //Adding request to the queue
    requestQueue.add(stringRequest);
}
private void getCountries(final JSONArray jsonArrayC){
    //Traversing through all the items in the json array

    countrylist=new ArrayList<String>();
    for(int i=0;i<jsonArrayC.length();i++){
        try {
            //Getting json object
            JSONObject json = jsonArrayC.getJSONObject(i);
          countryid= Integer.valueOf(json.getString("Id"));

            //Adding the name of the emtype to array list
            countrylist.add(json.getString("name"));
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    countryspinner.setAdapter(new ArrayAdapter<String>(AddEmployee.this, android.R.layout.simple_spinner_dropdown_item, countrylist));


   countryspinner.setSelection(99);

    countryspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            countryid = (int) id + 1;
            getState((int) id + 1);


        }

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

        }
    });
}

Вы можете использовать список Activity и отображать все данные в нем, а затем

    protected void onListItemClick(ListView l, View v, int position, long id){ 
    super.onListItemClick(l, v, position, id);
    Intent i = new Intent(MainActivity.this,NextActivity.class);
    startActivity(i);
}

Более подробную информацию можно получить по http://developer.android.com/reference/android/app/ListActivity.html

Другие вопросы по тегам