Картинки в GridView

251
08 января 2018, 10:17

Пытаюсь освоить Android Studio, поставил себе задачу реализовать приложение, которое бы брало с сервера JSON файл и выводило бы из него данные.

Реализовывал все на основе вот этого материала: http://camposha.info/source/android-json-gridview-source/

Все работает замечательно, так как и хотелось. Но вот картинки совсем не понимаю как выводить, в JSON файле указаны только ссылки, пример:

[{"id":"1","name":"Ivan","age":"41","avatar":"noavatar.png"}]

Как можно реализовать функционал получения картинки?

Есть также класс позволяющий грузить картинки:

public class MyAsyncTask extends AsyncTask<String, Void, Bitmap> {
public static final String APP_TAG = "TEST3";
private ImageView imageView;
public MyAsyncTask(ImageView imageView) {
    this.imageView = imageView;
}
@Override
protected Bitmap doInBackground(String... urls) {
    try {
        return BitmapFactory.decodeStream((InputStream) new URL(urls[0]).getContent());
    } catch (Throwable cause) {
        Log.e(APP_TAG, "getting image error", cause);
    }
    return null;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
    if (isCancelled()) {
        return;
    }
    if (bitmap != null) {
        imageView.setImageBitmap(bitmap);
    }
}}
ImageView imageView = (ImageView) findViewById(R.id.image);
new MyAsyncTask(imageView).execute("http://mysite.ru/image.jpg");

Есть вобще какая нибудь возможность подружить код выше с вот этим парсером?

public class JSONParser extends AsyncTask<Void,Void,Boolean>{
Context c;
String jsonData;
GridView gv;
ProgressDialog pd;
ArrayList<String> users=new ArrayList<>();
public JSONParser(Context c, String jsonData, GridView gv) {
    this.c = c;
    this.jsonData = jsonData;
    this.gv = gv;
}
@Override
protected void onPreExecute() {
    super.onPreExecute();
    pd=new ProgressDialog(c);
    pd.setTitle("Parse JSON");
    pd.setMessage("Parsing...Please wait");
    pd.show();
}
@Override
protected Boolean doInBackground(Void... voids) {
    return this.parse();
}
@Override
protected void onPostExecute(Boolean isParsed) {
    super.onPostExecute(isParsed);
    pd.dismiss();
    if(isParsed)
    {
        //bind
        //ArrayAdapter<String> adapter=new ArrayAdapter<String>(c,android.R.layout.simple_list_item_1,users);
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(c,R.layout.my_list_item2, R.id.tvUser, users);
        gv.setAdapter(adapter);
        gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(c, users.get(i), Toast.LENGTH_SHORT).show();
            }
        });
    } else {
        Toast.makeText(c, "Unable To Parse,Check Your Log output", Toast.LENGTH_SHORT).show();
    }
}
private Boolean parse()
{
    try
    {
        JSONArray ja=new JSONArray(jsonData);
        JSONObject jo;
        users.clear();
        for (int i=0;i<ja.length();i++)
        {
            jo=ja.getJSONObject(i);
            String name=jo.getString("name");
            users.add(name);
        }
        return true;
    } catch (JSONException e) {
        e.printStackTrace();
        return false;
    }
}}

Уже башкой об стену бьюсь, примеры у всех разные, реализация по разному, мозги кипят от напряжения. Если можете пнуть в нужное направление, буду благодарен. Спасибо за внимание.

READ ALSO
Сравнения строк в Ява [дубликат]

Сравнения строк в Ява [дубликат]

На данный вопрос уже ответили:

244
Layout добавить в начало

Layout добавить в начало

Обычно, чтобы добавить элемент, используется:

233
Помогите встроить RewardedVideoAd в libgdx проект

Помогите встроить RewardedVideoAd в libgdx проект

Находил кучу инструкций по вставке рекламы в приложения, но не понимаю, как их применять к моему libgdx проектуВышло разве что вставить баннер,...

220
Не отображаются кнопки

Не отображаются кнопки

Говорю сразу, я полнейший новичокУ меня не отображаются кнопки ОК(settingsButtonOK) и Cancel(settingsButonCancel)

230