首先,我使用volley库作为我的帖子请求。在这种情况下,我从服务器检索以下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数组中存储所选团队的ID值。有什么想法?
以下是代码的一部分
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表对应。
答案 0 :(得分:1)
{&#34; DDL&#34;:[{&#34;标识&#34;:1,&#34;名称&#34;:&#34;阿鲁巴&#34;},{&#34; ID&#34;:2&#34;名称&#34;:&#34;阿富汗&#34;},{&#34; ID&#34;:3,&#34;名称&#34;:&#34 ;安哥拉&#34;},{&#34;标识&#34:4,&#34;名称&#34;:&#34;安圭拉&#34;},{&#34;标识&#34;:5, &#34;名称&#34;:&#34;阿尔巴尼亚&#34;},{&#34;标识&#34;:6,&#34;名称&#34;:&#34;安道尔&#34;}] }
上面的代码显示了Json数组,DDL是json数组标记名。
// Country 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) {
}
});
}
答案 1 :(得分:0)
您可以使用列表活动并在其中显示所有数据
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
获取更多详情