簡體   English   中英

從網址加載圖片問題

[英]load Image from URL issue

我有一個onClickListener,它應該調用一個顯示靜態URL並顯示圖像的類。 我在被叫班上敬酒,但沒有顯示圖像。 list.onClickListener應該調用ShowImage類,該類應該發布圖像。 請幫助我不確定我在做什么錯。

注意*在我的main_layout.xml中,我有一個imageview。

package com.flash_tattoo;

import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;

import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;


public class MainActivity extends Activity {

    ListView list;
    LazyAdapter adapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);

         Bundle bundle = getIntent().getExtras();
         String jsonData = bundle.getString("jsonData");

                JSONArray jsonArray;
                try {
                    jsonArray = new JSONArray(jsonData);

                    String[] mStrings = new String[jsonArray.length()];
                    String[] mImages = new String[jsonArray.length()];
                    String[] mPath = new String[jsonArray.length()];

                    for (int i=0; i<jsonArray.length(); i++)
                    {
                        String url = jsonArray.getJSONArray(i).getString(2);
                        mStrings[i] = "http://www.2020mediaonline.com/tattoo/thumbnail_image/" + url;

                        String image_name = jsonArray.getJSONArray(i).getString(1);
                        mImages[i] = image_name;

                        String path_name = jsonArray.getJSONArray(i).getString(1);
                        mPath[i] = path_name;

                    }


                    list=(ListView)findViewById(R.id.list);
                    adapter=new LazyAdapter(this, mStrings, mImages);
                    list.setAdapter(adapter);


                    list.setOnItemClickListener(new OnItemClickListener() {
                        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){

                            ShowImage go = new ShowImage();

                            Toast.makeText(MainActivity.this, "In onClick", Toast.LENGTH_LONG).show();

                        }
                    });



                    Button b=(Button)findViewById(R.id.button1);
                    b.setOnClickListener(listener);

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


    }

   class ShowImage extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);

        ImageView imgView =(ImageView)findViewById(R.id.ImageView01);

        Drawable drawable = LoadImageFromWebOperations("http://www.ansi.okstate.edu/breeds/other/llama/llama1.jpg");
        imgView.setImageDrawable(drawable);
        Toast.makeText(MainActivity.this, "show big image", Toast.LENGTH_LONG).show();
        }

        private Drawable LoadImageFromWebOperations(String url)
        {
            try
            {
                InputStream is = (InputStream) new URL(url).getContent();
                Drawable d = Drawable.createFromStream(is, "src name");
                return d;
                }catch (Exception e) {
                System.out.println("Exc="+e);
                return null;
                }
            }
        }

    @Override
    public void onDestroy()
    {
        adapter.imageLoader.stopThread();
        list.setAdapter(null);
        super.onDestroy();
    }

    public OnClickListener listener=new OnClickListener(){
        @Override
        public void onClick(View arg0) {
        Intent myIntent = new Intent(MainActivity.this,flash_tattoo.class);
           startActivityForResult(myIntent, 0);
        }
    };

}

我建議您使用AsyncTask加載位圖並將其填充到imageView中,您可以通過以下鏈接找到更多詳細信息:

http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html

希望這可以幫到你。

您不能使用構造函數來啟動新活動。 您必須為此使用startActivity() 所以我不明白為什么您期望ShowImage go = new ShowImage()做任何事情。 它只是一個空的默認構造函數。

就是您要尋找的。 謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM