Ich habe einen Webservice, der eine Liste von Bildern (Profilbildern) und deren Namen und ID-Nr. Einige der Mitglieder haben kein Profilbild. Also füge ich ein Standardbild von drawbar hinzu. Ich benutze Volley Post und Pojo, um Json zu holen und die Bilder und Namen in Gridview hinzuzufügen. Aber anstatt Bilder und Namen anzuzeigen, wird JSON mit der Fehlermeldung "No value for profile_picture" angezeigt. This ist mein JSON-Ergebnis. So würde jede Hilfe bei der Beschaffung der Bilder und Namen sehr geschätzt werden.JSON Fehler: Kein Wert für profile_picture
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;
}
}
wo Sie Json Antwort? stellen Sie das auch zur Verfügung –
Bitte überprüfen Sie meine editierten Post. Es enthält den Link. – Sam
Sie müssen überprüfen, ob das Profilbild-Tag vorhanden ist oder nicht? lass mich die anwer hinzufügen –