Android получить изображение из Интернета с помощью JSON - PullRequest
2 голосов
/ 23 июня 2011

Я получаю информацию о новостях из Интернета.Так что я могу легко получить заголовок и тему новостей, но проблема в том, как получить изображение от json?

Вот мой код:

public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {  
                        convertView = mInflater.inflate(R.layout.haber_yapisi, null); // gets all of the views from adaptor_content and implements their id
                        holder = new ViewHolder();
                        holder.baslik = (TextView) convertView.findViewById(R.id.baslik);
                        holder.haber = (TextView) convertView.findViewById(R.id.haber);
                        holder.resim = (ImageView) convertView.findViewById(R.id.resim);
                        holder.aaa = (TextView) convertView.findViewById(R.id.aaa);
                        holder.bas=(TextView) findViewById(R.id.head_ana);
                        holder.bas.setText("Ana Sayfa");
                        convertView.setTag(holder);   
                      } else {
                        holder = (ViewHolder) convertView.getTag();
                      }

            HttpClient httpclient = new DefaultHttpClient();
            HttpGet httpget = new HttpGet("http://www.dha.com.tr/mobil/anasayfa.asp");
            HttpResponse response;

            try {
                response = httpclient.execute(httpget);
                HttpEntity entity = response.getEntity();
                if (entity != null) {

                 try {
                     InputStream instream = entity.getContent();
                     String line = "";
                     BufferedReader reader = new BufferedReader(new InputStreamReader(instream));
                     StringBuilder json = new StringBuilder();

                    while ((line = reader.readLine()) != null) {
                           json.append(line + "\n");
                     }

                  StringBuilder stringBuilder = new StringBuilder();

                  JSONArray siteler = new JSONArray(json.toString());


                       JSONObject ss = siteler.getJSONObject(position);
                       holder.baslik.setText(ss.getString("strsubject"));
                       holder.haber.setText( ss.getString("strbody") );
                           holder.resim.setImageBitmap("WHAT SHOULD I DO FOR GETTİNG IMAGE")

                  holder.aaa.setText(stringBuilder.toString());

                   instream.close();

                } catch (Exception e) {
                           holder.aaa.setText("Error is: " + e);
                }
             }

           } catch (Exception e) {
                holder.aaa.setText("Error is : " + e);
           }


                        return convertView; 
            }
    }

PLESE HELP!

Ответы [ 5 ]

4 голосов
/ 23 июня 2011

Если ваш json содержит URL-адрес изображения, вы можете использовать

String imageBaseDirectory = "http://www.dha.com.tr/newpics/news/";
String imageName = "230620111119295717933.jpg";//get image name from json parsing;
    imageview.setImageURI(Uri.parse(imageBaseDirectory+imageName));

Но я вижу, что URL, на который вы ссылаетесь, не содержит URL-адрес изображения, только он содержит имя изображения

0 голосов
/ 06 сентября 2014

Как загрузить изображение из json?Попробуйте picasso , это легко:

String imageUrl = imgBaseUrl + ss.getString ("foto");// URL-адрес изображения Picasso.with (this.getActivity ()). load (imageUrl) .into (holder.resim);// holder.resim - изображение

0 голосов
/ 23 июня 2011

Большая часть ответа в этом другом посте здесь:

Как загрузить imageView по URL в Android

1) создайте URL и передайте его методу, указанному в предоставленной мной ссылке

String myPhoto = "foto2";
String url = "http://mysite.com/images/" + myPhoto + ".png";
0 голосов
/ 23 июня 2011

Ваш JSON содержит имя файла.Предполагая, что вы знаете путь к изображениям, сформируйте URL и сделайте так, как предложил Шайлендра, например:

URL url = new URL(imgBaseUrl + ss.getString("foto"));
URLConnection connection = url.openConnection();
FlushedInputStream fis = new FlushedInputStream(connection.getInputStream());
ByteArrayBuffer baf = new ByteArrayBuffer(100);
int current = 0;  
while((current = fis.read()) != -1){  
    baf.append((byte)current);  
}
fis.close();
holder.resim.setImageBitmap(BitmapFactory.decodeByteArray(baf, 0, baf.length()));

Обязательно используйте FlushedInputStream, как показано на http://code.google.com/p/android/issues/detail?id=6066

static class FlushedInputStream extends FilterInputStream {
    public FlushedInputStream(InputStream inputStream) {
    super(inputStream);
    }

    @Override
    public long skip(long n) throws IOException {
        long totalBytesSkipped = 0L;
        while (totalBytesSkipped < n) {
            long bytesSkipped = in.skip(n - totalBytesSkipped);
            if (bytesSkipped == 0L) {
                  int bite = read();
                  if (bite < 0) {
                      break;  // we reached EOF
                  } else {
                      bytesSkipped = 1; // we read one byte
                  }
           }
           totalBytesSkipped += bytesSkipped;
        }
        return totalBytesSkipped;
    }
}
0 голосов
/ 23 июня 2011

У вас есть изображение в формате JSON ?? если это так, то создайте еще одно http-соединение для этого URL, получите inputtream, а затем создайте растровое изображение из этого потока. еще уточнить здесь, какая информация у вас есть для изображения в вашем JSON ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...