私は画像(プロフィール写真)のリストとその名前とID番号を返すWebサービスを持っています。メンバーの中にはプロフィール画像がありません。だから私はdrawableからデフォルトの画像を追加しています。私は、volleyポストとpojoを使用してjsonを取得し、画像と名前をgridviewに追加しています。しかし、画像と名前を表示する代わりに、 "profile_pictureの値がありません"というJSONエラーメッセージが表示されます。 Thisは私のjsonの結果です。だから、画像や名前を取得する上でのどんな助けも大歓迎です。 JSONエラー:profile_pictureの値がありません
答えて
必要に見てチェックnullであるかどうかをチェックについてこのような文字列を確認してください
String profile_picture = "";
if(json_data.has("profile_picture")){
profile_picture = json_data.getString("profile_picture");
}else{
profile_picture = "";
}
あなたのnewItemはnullです。 forループ
newItem = new GridItem();
まだnewItem.setName(name);という行にNullPointerExceptionとその例外が表示されています。 – Sam
何がオンラインですか? –
もコードを更新します。私はあなたが私に言った条件をどのように追加したのか確認するのを躊躇します –
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");
}
私はNullPointerExceptionを取得しています。 http://hastebin.com/buhuvamiqi.avrasm @Andy – Sam
- 1. JSONに親タグがありません
- 2. キャッシュファイルのエラーがありませんか?
- 3. サービスインターフェイスのエンドポイントがありません! "エラー"
- 4. アンドロイドテーブルのエラーがありません
- 5. カルマのエラー 'タイムスタンプがありません'
- 6. セキュアタブのURLエラーがありません
- 7. json.JSONException:ProductListの値がありません
- 8. django 'DateTimeField'にデフォルト値エラーがありません
- 9. 'JSON'がnullまたはオブジェクトではありません 'ASPのエラー
- 10. オブジェクトにはエラーがありません
- 11. BlackBerryアプリ "アプリケーションインスタンスがありません"エラー
- 12. dependencies.dependency.version 'にエラーがありません
- 13. エラー:return文がありません
- 14. Xcode 4.3 - エラー:IDがありません
- 15. project.propertiesファイルにエラーがありません
- 16. エラーNodeStoreにモデルがありません
- 17. エラー:ベクトルにタイプがありません
- 18. javaエラーがありませんreturn文
- 19. パラメータ値がありません
- 20. "プロパティ 'パス'に値がありません。
- 21. タイプ 'UIViewController'の値にJSONという名前のメンバ 'jsonfile'がありません
- 22. JSONへのDjangoシリアル化エラー: 'MetaDict'オブジェクトに 'concrete_model'属性がありません
- 23. PropertyInfo.SetValue()は動作しませんがエラーはありません
- 24. grailsは保存しませんがエラーはありません
- 25. move_uploaded_fileは動作しませんがエラーはありません
- 26. クラスビューの戻り値オブジェクトに属性 'rindex'エラーがありません
- 27. jsonのHtml(jsonの仕様は必要ありません)
- 28. jqgridカスタムJSONデータにエラーはありませんが、データは表示されません
- 29. Java - Iphone Communicationの "JSON経由のコンテンツがありません"
- 30. Google Adsenseエラー「TagError:adsbygoogle.push()エラー:availableWidth = 0のスロットサイズがありません」
内部あなたが最初のようにそれを初期化する必要があり
どこJSONレスポンスはありますか?それも提供してください –
私の編集した投稿をチェックしてください。そのリンクが含まれています。 – Sam
プロフィール画像タグが存在するかどうかを確認する必要がありますか?アンウォールを追加させてください –