我可以使用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到列表视图的图像。 如何设置这些图像的高度和宽度?
答案 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中的width
和height
作为属性返回。
使用位图是有问题的,因为如果它们太大会导致OutOfMemory
错误。