2 hcg 21 hcg_21 于 2013.04.01 13:16 提问

使用 Bitmap 时,图片不能显示

请大家帮我看看下面的代码,为什么图像不能在list中显示,然而空间和图像的其他描述却能看得见。

public class Test extends ListActivity  {
      Prefs myprefs = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listplaceholder);
        this.myprefs = new Prefs(getApplicationContext());
        // install handler for processing gui update messages
        ArrayList<HashMap<String, Object>> mylist = new ArrayList<HashMap<String, Object>>(); 
       JSONObject json = JSONfunctions.getJSONfromURL("http://midsweden.gofreeserve.com/proj/androidjson.php?identifier=" + 
        Test.this.myprefs.getPersonalno());
        try{

            JSONArray  earthquakes = json.getJSONArray("services");

            for(int i=0;i<earthquakes.length();i++){                        
                HashMap<String, Object> map = new HashMap<String, Object>();
                 JSONObject e = earthquakes.getJSONObject(i);

                map.put("id", e.getString("taskid"));
                map.put("pic", "Service name : " + e.getString("employeepic"));
                map.put("serviceinfo", "" +  e.getString("employeename")+ " : "+ e.getString("starttime")
                        +" To " +  e.getString("endtime"));

                  BmpFromURL  myBmpFromURL = new BmpFromURL("http://midsweden.gofreeserve.com/proj/admin/pictures/file87619.jpg");
                  Bitmap myBitmap = myBmpFromURL.getMyBitmap();
                    map.put("img",myBitmap);
                mylist.add(map);            
            }       
        }catch(JSONException e)        {
             Log.e("log_tag", "Error parsing data "+e.toString());
        }

        SimpleAdapter adapter = new SimpleAdapter(this, mylist , R.layout.test,new String[] {"img", "servicename", "serviceinfo" }, 
                        new int[] {  R.id.image ,R.id.item_title, R.id.item_subtitle });

        setListAdapter(adapter);

        final ListView lv = getListView();
        lv.setTextFilterEnabled(true);  
        lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
                @SuppressWarnings("unchecked")
                HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);                   
                Toast.makeText(Test.this, "ID '" + o.get("id") + "' was clicked.", Toast.LENGTH_SHORT).show(); 

            }
        });

    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }
      @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.settings:     
                Intent intent = new Intent(this, ShowSettings.class);
                  startActivity(intent);
            break;
            case R.id.web:     
                Intent intent4 = new Intent(this, MenuActivity.class);
                  startActivity(intent4);
            break;
            case R.id.services:     
                Intent intent2 = new Intent(this, Test.class);
                startActivity(intent2);
              break;
            case R.id.Quit: 
               Intent intent3 = new Intent(this, ServicesDemo.class);
                startActivity(intent3);
                   break;
            default:    
            break;
        }
        return true;
    }
}

Bitmap class

    public class BmpFromURL {
    private Bitmap myBitmap;
    public BmpFromURL(String imageURL){
    URL myImageURL = null;
    try {
    myImageURL = new URL(imageURL);

    } catch (MalformedURLException error) {


    error.printStackTrace();

    }
    try {
    HttpURLConnection connection = (HttpURLConnection)myImageURL .openConnection();
    connection.setDoInput(true);
    connection.connect();
    InputStream input = connection.getInputStream();
    myBitmap = BitmapFactory.decodeStream(input);

    } catch (IOException e) {
   e.printStackTrace();
    }
    }
   public Bitmap getMyBitmap() {
    return myBitmap;
    }
}

xml 文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:cacheColorHint="#55000000"
    android:background="#55000000"
    >
      <ImageView
      android:id="@+id/image"
      android:layout_width="50dip"
      android:layout_height="50dip"
      />
<TextView  

    android:id="@+id/item_title"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:padding="2dp"
    android:textSize="20dp" />
    <TextView  
    android:id="@+id/item_subtitle"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="2dp"
    android:textSize="18dp" />
</LinearLayout>

1个回答

LiDaming_and
LiDaming_and   2013.04.01 16:34
已采纳

请使用下面 ListView 的图片延迟加载
请看这里: http://open-pim.com/tmp/LazyList.zip
GitHub: https://github.com/thest1/LazyList

Csdn user default icon
上传中...
上传图片
插入图片