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
cevap
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();
Yine de NullPointerException ve onun "newItem.setName (name);" satırında oluyor. – Sam
numaralı telefon hattındaki 92 –
numaralı hat da kodu günceller. –
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;
}
}
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");
}
web sitesinde pojo dosyaları için json oluşturabilirsiniz NullPointerException alıyorum. http://hastebin.com/buhuvamiqi.avrasm @Andy – Sam
içeride ilk bunu böyle başlatmak gerekiyor? Bunu sağlamak için lütfen –
Lütfen düzenlenmiş yayınımı kontrol edin. Bu bağlantıyı içerir. – Sam
Profil resmi etiketinin mevcut olup olmadığını kontrol etmeniz gerekiyor mu? anwer –