2016-03-24 23 views
0

Görüntülerin bir listesini (profil resimleri) ve bunların isimlerini ve kimlik nolarını döndüren bir web servisim var. Bazı üyelerin profil resmi yok. Yani çekilebilir varsayılan resim ekliyorum. Ben json almak ve gridview resim ve isimleri eklemek için voleybolu post ve pojo kullanıyorum. Ancak resim ve isimleri göstermek yerine, JSON hata mesajını görüntülemek yerine "profile_picture için değer yok". This benim json sonucum. Böylece, görüntüleri ve isimleri alma konusunda herhangi bir yardım çok takdir edilecektir. JSON Hatası: profile_picture için bir değer yok

+0

içeride ilk bunu böyle başlatmak gerekiyor? Bunu sağlamak için lütfen –

+0

Lütfen düzenlenmiş yayınımı kontrol edin. Bu bağlantıyı içerir. – Sam

+0

Profil resmi etiketinin mevcut olup olmadığını kontrol etmeniz gerekiyor mu? anwer –

cevap

1

Gerekirse görmek için kontrol boş olup olmadığını görmek için kontrol konusunda bu gibi eskileri gözden geçirme

newItem'iniz boş.

sen nereye json yanıttır döngü

newItem = new GridItem(); 
+0

Yine de NullPointerException ve onun "newItem.setName (name);" satırında oluyor. – Sam

+0

numaralı telefon hattındaki 92 –

+0

numaralı hat da kodu günceller. –

0

Main fragment: 
 

 
public class SearchName extends Fragment{ 
 

 
    private GridView mGridView; 
 
    private GridItem newItem; 
 
    private GridAdapter mGridAdapter; 
 
    private ArrayList<GridItem> mGridData; 
 
    public static final String KEY_USERID = "user_id", KEY_NAME = "search_text"; 
 
    private static final String FETCH_ALL_MEMBERS = "http://example.com/api/member/get-all/"; 
 
    String profile_picture = ""; 
 

 
    @Nullable 
 
    @Override 
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
 
     return inflater.inflate(R.layout.searchname, container, false); 
 
    } 
 

 
    @Override 
 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
 
     super.onViewCreated(view, savedInstanceState); 
 

 
     mGridView = (GridView)view.findViewById(R.id.grid_view); 
 

 
     displayLog(); 
 

 
     mGridData = new ArrayList<>(); 
 
     mGridAdapter = new GridAdapter(getContext(), R.layout.gridrow, mGridData); 
 
     mGridView.setAdapter(mGridAdapter); 
 

 

 

 
    } 
 

 
    private void displayLog() { 
 
     StringRequest stringRequest = new StringRequest(Request.Method.POST, FETCH_ALL_MEMBERS, 
 
       new Response.Listener<String>() { 
 
        @Override 
 
        public void onResponse(String response) { 
 

 
         try { 
 
          JSONObject jObj = new JSONObject(response); 
 

 
          System.out.println(jObj); 
 

 
          String status = jObj.getString("status"); 
 

 
          // Now check status value 
 
          if (status.equals("0")) { 
 
           Toast.makeText(getActivity(), "There was some error! Please try again.", Toast.LENGTH_LONG).show(); 
 
          } else if (status.equals("1")) { 
 

 

 
           JSONArray result = jObj.getJSONArray("result"); 
 
           for (int i = 0; i < result.length(); i++) { 
 
            JSONObject json_data = result.getJSONObject(i); 
 
            String name = json_data.getString("name"); 
 
            String user_id = json_data.getString("user_id"); 
 
            //String profile_picture = json_data.getString("profile_picture"); 
 

 
            newItem.setName(name); 
 
            newItem.setUserId(user_id); 
 
            if(json_data.has("profile_picture")){ 
 

 
             //String image_def = String.valueOf(R.drawable.default_profile); 
 
             newItem.setImage(json_data.getString("profile_picture")); 
 

 
            }else{ 
 

 
             Uri path = Uri.parse("android.resource://com.sam.fitlincsearch/" + R.drawable.default_profile); 
 
             String image_def = path.toString(); 
 
             newItem.setImage(image_def); 
 

 
            } 
 

 

 
            mGridData.add(newItem); 
 
           } 
 

 

 
           mGridAdapter.notifyDataSetChanged(); 
 

 
          } else { 
 
           // Error in login. Get the error message 
 
           String errorMsg = jObj.getString("error_msg"); 
 
           Toast.makeText(getActivity(), errorMsg, Toast.LENGTH_LONG).show(); 
 
          } 
 
         } catch (JSONException e) { 
 
          // JSON error 
 
          e.printStackTrace(); 
 
          Toast.makeText(getActivity(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show(); 
 
         } 
 
        } 
 
       }, new Response.ErrorListener() { 
 
      @Override 
 
      public void onErrorResponse(VolleyError error) { 
 
       Toast.makeText(getActivity(), error.toString(), Toast.LENGTH_LONG).show(); 
 
      } 
 
     }) { 
 
      @Override 
 
      protected Map<String, String> getParams() { 
 
       Map<String, String> params = new HashMap<String, String>(); 
 
       params.put(KEY_USERID, "1"); 
 
       return params; 
 
      } 
 

 
     }; 
 

 
     RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
 
     requestQueue.add(stringRequest); 
 
    } 
 
}
Adapter: 
 

 
public class GridAdapter extends ArrayAdapter<GridItem> { 
 

 
    private Context mContext; 
 
    int resource; 
 
    private ArrayList<GridItem> mGridData = new ArrayList<GridItem>(); 
 

 
    public GridAdapter(Context mContext, int resource, ArrayList<GridItem> mGridData) { 
 
     super(mContext, resource, mGridData); 
 
     this.resource = resource; 
 
     this.mContext = mContext; 
 
     this.mGridData = mGridData; 
 
    } 
 

 
    public void setGridData(ArrayList<GridItem> mGridData) { 
 
     this.mGridData = mGridData; 
 
     notifyDataSetChanged(); 
 
    } 
 

 
    @Override 
 
    public GridItem getItem(int position) { 
 
     return super.getItem(position); 
 
    } 
 

 

 

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

 
     ViewHolder holder; 
 
     if (v == null) { 
 
      holder = new ViewHolder(); 
 
      LayoutInflater inflater = ((Activity) mContext).getLayoutInflater(); 
 

 
       v = inflater.inflate(R.layout.gridrow, parent, false); 
 
       holder.image = (ImageView) v.findViewById(R.id.item_image); 
 
       holder.name = (TextView) v.findViewById(R.id.item_name); 
 

 
      holder.image = (ImageView) v.findViewById(R.id.item_image); 
 
      v.setTag(holder); 
 
     } else { 
 
      holder = (ViewHolder) v.getTag(); 
 
     } 
 

 

 
      GridItem item = mGridData.get(position); 
 
      Picasso.with(mContext) 
 
        .load(item.getImage()) 
 
        .placeholder(R.drawable.placeholder) 
 
        .fit() 
 
        .into(holder.image); 
 
      holder.name.setText(item.getName()); 
 

 

 
     return v; 
 
    } 
 

 
    class ViewHolder { 
 
     ImageView image, icon; 
 
     TextView name; 
 
    } 
 

 
}
Pojo: 
 

 
public class GridItem { 
 
    private String nameUrls, imageUrls, sportsCat, userId; 
 

 
    public GridItem() { 
 
     super(); 
 
    } 
 

 
    public String getImage() { 
 
     return imageUrls; 
 
    } 
 

 
    public void setImage(String imageUrls) { 
 
     this.imageUrls = imageUrls; 
 
    } 
 

 
    public String getName() { 
 
     return nameUrls; 
 
    } 
 

 
    public void setName(String nameUrls) { 
 
     this.nameUrls = nameUrls; 
 
    } 
 

 
    public String getSportsCat(){ 
 
     return sportsCat; 
 
    } 
 

 
    public void setSportsCat(String sportsCat){ 
 
     this.sportsCat = sportsCat; 
 
    } 
 

 
    public String getUserId(){ 
 
     return userId; 
 
    } 
 

 
    public void setUserId(String userId){ 
 
     this.userId = userId; 
 
    } 
 
}
Bu ne çalışıyor, yerine profil resmi JSON örneğin profile_picture içeriyorsa

If (!json_data.has("profile_picture"))){ 

            //String image_def = String.valueOf(R.drawable.default_profile); 
            Uri path = Uri.parse("android.resource://com.sam.fitlincsearch/" + R.drawable.default_profile); 
            String image_def = path.toString(); 
            newItem.setImage(image_def); 
           }else{ 
            newItem.setImage(json_data.getString("profile_picture"); 
           } 
+0

web sitesinde pojo dosyaları için json oluşturabilirsiniz NullPointerException alıyorum. http://hastebin.com/buhuvamiqi.avrasm @Andy – Sam