Пытаюсь освоить 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;
}
}}
Уже башкой об стену бьюсь, примеры у всех разные, реализация по разному, мозги кипят от напряжения. Если можете пнуть в нужное направление, буду благодарен. Спасибо за внимание.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Находил кучу инструкций по вставке рекламы в приложения, но не понимаю, как их применять к моему libgdx проектуВышло разве что вставить баннер,...
Говорю сразу, я полнейший новичокУ меня не отображаются кнопки ОК(settingsButtonOK) и Cancel(settingsButonCancel)