2017-09-16 6 views
1

GETメソッドを使用してリストビューに表示するユーザーのリストを取得しようとしています。私が使用しているカストムリストビューは、アレイリストの最後のオブジェクトをリストビューに読み込むことを邪魔しています。この質問は以前に聞かれたかもしれません。しかし、私は適切な回答を得ることはできません。事前の申し立て。 以下は私のメインクラスからの抜粋です。カスタムリストアダプターが同じオブジェクトを取得しています

String tag_string_req = "req_search"; 

StringRequest strReq = new StringRequest(Method.POST, 
    AppConfig.searchUrl, new Response.Listener<String>() { 

    @Override 
    public void onResponse(String response) { 
    Log.d(TAG, "Search Response: " + response.toString()); 
    hidePDialog(); 
    // for(int i=0;i<response.length();i++) { 
    try { 
     JSONObject jObj = new JSONObject(response); 
     boolean error = jObj.getBoolean("error"); 

     // Check for error node in json 
     if (!error) { 
     // user successfully logged in 
     // Create login session 

     // Now store the user in SQLite 
     Donors donor = new Donors(); 
     // String uid = jObj.getString("uid"); 

     JSONArray user = jObj.getJSONArray("users"); 

     for (int i = 0; i < user.length(); i++) { 
      JSONObject ja = user.getJSONObject(i); 
      donor.setId(Integer.parseInt(ja.getString("id"))); 
      donor.setName(ja.getString("name")); 
      donor.setPhone(ja.getString("phone")); 

      System.out.println(
       "*********************************************************" + Integer 
        .parseInt(ja.getString("id")) + " " + ja.getString("name") + " " + ja 
        .getString("phone")); 
      donorsList.add(donor); 
     } 

     adapter.notifyDataSetChanged(); 

     } else { 
     // Error in login. Get the error message 
     String errorMsg = jObj.getString("message"); 
     Toast.makeText(getApplicationContext(), 
      errorMsg, Toast.LENGTH_LONG).show(); 

     } 
    } catch (JSONException e) { 
     // JSON error 
     e.printStackTrace(); 
     Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), 
      Toast.LENGTH_LONG).show(); 
    } 

    } 


}, new Response.ErrorListener() { 

    @Override 
    public void onErrorResponse(VolleyError error) { 
    Log.e(TAG, "Search Error: " + error.getMessage()); 
    Toast.makeText(getApplicationContext(), 
     error.getMessage(), Toast.LENGTH_LONG).show(); 
    hidePDialog(); 
    } 
}) { 

    @Override 
    protected Map<String, String> getParams() { 
    // Posting parameters to login url 
    Map<String, String> params = new HashMap<String, String>(); 
    System.out.println(
     "*********************************************************" + distance + " " + donorLat 
      + " " + donorLong + " " + bloodGroup); 

    params.put("distance", distance); 
    params.put("origin_lat", donorLat); 
    params.put("origin_long", donorLong); 
    params.put("blood_group", bloodGroup); 

    return params; 
    } 

}; 

// Adding request to request queue 
AppController.getInstance().addToRequestQueue(strReq, tag_string_req); 

これはリストアダプタです。

public class CustomListAdapter extends BaseAdapter { 
private Activity activity; 
private LayoutInflater inflater; 
private List<Donors> donorItems; 
public CustomListAdapter(Activity activity, List<Donors> donorItems) { 
this.activity = activity; 
this.donorItems = donorItems; 
} 

@Override 
public int getCount() { 
return donorItems.size(); 
} 

@Override 
public Object getItem(int location) { 
return donorItems.get(location); 
} 

@Override 
public long getItemId(int position) { 
return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

if (inflater == null) 
    inflater = (LayoutInflater) activity 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
if (convertView == null) 
    convertView = inflater.inflate(R.layout.list_row, null); 

; 
TextView title = (TextView) convertView.findViewById(R.id.title); 
ImageButton btnText = (ImageButton) convertView.findViewById(R.id.btnText); 
ImageButton btnCall = (ImageButton) convertView.findViewById(R.id.btnCall); 

// getting movie data for the row 
Donors d = donorItems.get(position); 
System.out.println("--------------------"+d); 


// title 
title.setText(d.getName()); 


return convertView; 
} 

} 

ありがとうございます。

答えて

0

エラーを見つけました。 forループの外側のオブジェクトを初期化しました。それはこのようにすべきです。ありがとう。

for (int i = 0; i < user.length(); i++) { 
      JSONObject ja = user.getJSONObject(i); 
      Donors donor = new Donors(); 
      donor.setId(Integer.parseInt(ja.getString("id"))); 
      donor.setName(ja.getString("name")); 
      donor.setPhone(ja.getString("phone")); 

      System.out.println(
       "*********************************************************" + Integer 
        .parseInt(ja.getString("id")) + " " + ja.getString("name") + " " + ja 
        .getString("phone")); 
      donorsList.add(donor); 
      System.out.println(donor); 
     } 
関連する問題