0
私はグリッドビューに画像を読み込むためにピカソを使用しています。イメージURLSは、次のコードを使用してデータベースから取得されます。 URLSがAndroidモニターに正しく出力されるので、これは機能します。GridViewは画像の配列を渡すときに空です
private void getImages(){
String BASE_URL = IMAGES_URL + userDetails.getUID();
JsonObjectRequest jsonObjReq = new JsonObjectRequest(
Request.Method.GET,BASE_URL, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try{
JSONArray listArray = response.getJSONArray("images");
images = new String[listArray.length()];
for(int i = 0; i <= listArray.length();i++)
{
JSONObject row = listArray.getJSONObject(i);
String name = row.getString("image_url");
images[i] = name;
Log.d(TAG, images[i]);
}
gridview.setAdapter(new ImageAdapter(getActivity(), images));
} catch (JSONException e)
{
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, "Error: " + error.getMessage());
}
});
VolleyRequestQueue.getInstance(getActivity()).addToRequestQueue(jsonObjReq);
}
私のアダプタのコードは次のとおりです。
public class ImageAdapter extends BaseAdapter {
private Context mContext;
private String[] imageUrls;
public ImageAdapter(Context c, String[] imageUrls) {
mContext = c;
this.imageUrls = imageUrls;
}
public int getCount() {
return imageUrls.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(200, 200));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
Picasso picasso = Picasso.with(mContext);
picasso.setIndicatorsEnabled(true);
picasso.setLoggingEnabled(true);
Picasso
.with(mContext)
.load("http://178.62.121.73" + imageUrls[position])
.into(imageView);
return imageView;
}
}
しかし、何も私の活動にロードされていません。 setadapterをOnViewCreatedに移動すると、イメージURLをダウンロードするためのコードがどこにあるのかわからなくても、正常に実装されているにもかかわらず、イメージ配列にnullpointerexceptionが発生します。
ええ、Logを使って配列を出力すると、配列には各画像のURLが入力されます。 – xiimoss