1

こんにちは、URL から ImageView に画像を追加しようとしていますが、ビットマップとして読み込もうとしましたが、何も表示されません。これを行うための最良の方法は何か、または私が間違っていることを誰かが知っていますか?

ここに私のコードがあります

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    //Check Preferences which sets UI
    setContentView(R.layout.singlenews);
      TextView headerText = (TextView) findViewById(R.id.header_text);
       headerText.setText("Latest News");


     PostTask posttask;
       posttask = new PostTask();
       posttask.execute();
}

public void loadNews(){

    newsStr = getIntent().getStringExtra("singleNews");




    try {
        JSONObject obj = new JSONObject(newsStr);
        content = obj.getString("content");
          title = obj.getString("title");
          fullName = obj.getString("fullname");
          created = obj.getString("created");
        NewsImageURL = obj.getString("image_primary");
        tagline = obj.getString("tagline");

        meta = "posted by: " + fullName + " " + created;


        URL aURL = new URL("NewsImageURL");
        URLConnection conn = aURL.openConnection();
        conn.connect();
        InputStream is = conn.getInputStream();
        /* Buffered is always good for a performance plus. */
        BufferedInputStream bis = new BufferedInputStream(is);
        /* Decode url-data to a bitmap. */
         bm = BitmapFactory.decodeStream(bis);
        bis.close();
        is.close();
        /* Apply the Bitmap to the ImageView that will be returned. */






        Log.v("lc", "content=" + content);
        Log.v("lc", "title=" + title);
        Log.v("lc", "fullname=" + fullName);
        Log.v("lc", "created=" + created);
        Log.v("lc", "NewsImage=" + NewsImageURL);
        Log.v("lc", "Meta=" + meta);
        Log.v("lc", "tagline=" + tagline);







} catch 
 (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

}




public class PostTask extends AsyncTask<Void, String, Boolean> {

    @Override
    protected Boolean doInBackground(Void... params) {
        boolean result = false;
        loadNews();
        publishProgress("progress");
        return result;
    }

    protected void onProgressUpdate(String... progress) {
        StringBuilder str = new StringBuilder();
            for (int i = 1; i < progress.length; i++) {
                str.append(progress[i] + " ");

            }
    }

        @Override
    protected void onPostExecute(Boolean result) {
        super.onPostExecute(result);
        Log.v("BGThread", "begin fillin data");

        fillData();

        }
}

public void fillData(){

    NewsView = LayoutInflater.from(getBaseContext()).inflate(R.layout.newsdetailact,
            null);

  TextView Title = (TextView) NewsView.findViewById(R.id.NewsTitle);
  Title.setText(title);

  TextView Tagline = (TextView) NewsView.findViewById(R.id.subtitle);
  Tagline.setText(tagline);

  TextView MetaData = (TextView) NewsView.findViewById(R.id.meta);
  MetaData.setText(meta);




     ImageView NewsImage = (ImageView)NewsView.findViewById(R.id.imageView2);
     NewsImage.setImageBitmap(bm);

  TextView MainContent = (TextView) NewsView.findViewById(R.id.maintext);
  MainContent.setText(content);





  Log.v("BGThread", "Filled results");

adapter = new MergeAdapter();

adapter.addView(NewsView);


setListAdapter(adapter);


}



}
4

4 に答える 4

3

このコード スピネットを使用して、URL 画像をビットマップに変換し、画像ビューで表示してください。

URL url = new URL("http://image10.bizrate-images.com/resize?sq=60&uid=2216744464");
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(bmp);

Tはそれがあなたを助けると思います。

ありがとう

于 2012-06-15T15:01:40.763 に答える
0

このような状況では、最初に InputStream をファイルに書き込んでから、ファイルからロードしようとします。それは通常うまくいきます。ファイルへの書き込みを正当化するもう 1 つの理由は、予想よりもはるかに時間がかかる可能性があるため、インターネットから画像を遅延読み込みすることを好むためです。この場合、プロセスを終了する前に InputStream が閉じられた可能性があります。

あなたのコードと私のコードは、ファイル部分にコピーすることなく、ほとんど同じ構造になっています。

調査したい場合は、次のことをお勧めします。

  1. イメージが実際に存在することを確認します。
  2. ストリームとビットマップのサイズをチェックして比較します。
  3. InpuStream をチェックして、予期せず閉じられたかどうかを確認します。
于 2012-06-15T15:17:37.423 に答える
0

私はすべての画像読み込みにPrimeを使用しており、このような状況を簡単に処理できます。

于 2012-06-15T15:03:24.807 に答える
0
          String url1 = "Your URL....";

                    URL ulrn = new URL(url1);
                    HttpURLConnection con = (HttpURLConnection) ulrn
                            .openConnection();
                    InputStream is = con.getInputStream();
                    bmp1 = BitmapFactory.decodeStream(is);

                    int widthPx = 150;  //you can set width
                    int heightPx = 150; //you can set height
                    bmp1=Bitmap.createScaledBitmap(bmp1, widthPx, heightPx, true); 

         Imgview1.setImageBitmap(bmp1);
于 2012-06-15T15:13:30.287 に答える