如何从服务器设置图像高度和宽度?

时间:2012-03-26 08:39:57

标签: android

我可以使用json通过url从服务器数据库中获取所有图像。我在listview中显示所有图像如何给出图像的高度和宽度

这是main.java

    JSONArray json = jArray.getJSONArray("names");
list=(ListView)findViewById(R.id.list);// calls main.xml
    adapter=new ImageAdapter(this, json);
    list.setAdapter(adapter);
  Imageadapter.java
  public class ImageAdapter extends BaseAdapter {
Bitmap bmp;
private static LayoutInflater inflater = null;

private ImageView[] mImages;
String[] itemimage;
TextView[] tv;
String itemname;
HashMap<String, String> map = new HashMap<String, String>();

public ImageAdapter(Context context, JSONArray imageArrayJson) {
    this.mImages = new ImageView[imageArrayJson.length()];
    String qrimage;
    try {

        for (int i = 0; i < imageArrayJson.length(); i++) {
            JSONObject image = imageArrayJson.getJSONObject(i);
            qrimage = image.getString("itemimage");
            itemname = image.getString("itemname");
            map.put("itemname", image.getString("itemname"));
            System.out.println(itemname);

            byte[] qrimageBytes = Base64.decode(qrimage.getBytes());

            bmp = BitmapFactory.decodeByteArray(qrimageBytes, 0,
                    qrimageBytes.length);
            mImages[i] = new ImageView(context);
            mImages[i].setImageBitmap(bmp);

        }

    } catch (Exception e) {
        // TODO: handle exception
    }
}

public int getCount() {
    return mImages.length;
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {


    return mImages[position];

}
  }
 My xml view
<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     />


 </LinearLayout>

以上代码显示从服务器数据库到android到列表视图的图像。 如何设置这些图像的高度和宽度?

3 个答案:

答案 0 :(得分:0)

将字节转换为位图后。请问位图告诉他的身高,宽度

    bmp = BitmapFactory.decodeByteArray(qrimageBytes, 0,
                        qrimageBytes.length);

    // Ask Height and width from bitmap.
    Log.e("Image Height" , " Height = "+bmp.getHeight() + " , Width = "+ bmp.getWidth() );

        mImages[i] = new ImageView(context);

        // Use LayououtParams to se your imageView hegiht , width

        LayoutParams params = new LayoutParams(new LayoutParams( bmp.getWidth(), bmp.getHeight()));
        mImages[i].setLayoutParams(params);

        // And don't forget to set your imageView scale type. 
        img.setScaleType(ScaleType.FIT_CENTER);
        // Then set your bitmap
        mImages[i].setImageBitmap(bmp);

答案 1 :(得分:0)

您使用哪种布局来显示ListView行?您需要使用自定义ListView来显示图像和文本。给我一些代码。我会为你安排。

答案 2 :(得分:0)

最简单的方法是让服务器将json中的widthheight作为属性返回。

使用位图是有问题的,因为如果它们太大会导致OutOfMemory错误。