我使用json通过url从mysql数据库中获取图像和名称。我可以在列表视图中查看图像。但不能查看名称。我想在getview方法中创建自定义视图。但是创建cusotom视图它在logcat中显示错误。请查看我的代码并编辑我的代码发送给我
public class ImageAdapter extends BaseAdapter {
private static final Context Context = null;
String qrimage;
Bitmap bmp, resizedbitmap;
Activity activity = null;
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()];
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);
int width = 100;
int height = 100;
resizedbitmap = Bitmap.createScaledBitmap(bmp, width, height,
true);
mImages[i] = new ImageView(context);
mImages[i].setImageBitmap(resizedbitmap);
mImages[i].setScaleType(ImageView.ScaleType.FIT_START);
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// tv[i].setText(itemname);
}
} 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 class ViewHolder {
TextView text;
}
public View getView(int position, View convertView, ViewGroup parent) {
// return mImages[position];
ViewHolder holder = new ViewHolder();
if (convertView == null){
convertView = inflater.inflate(R.layout.listview, null);
holder.text = (TextView)convertView.findViewById(R.id.text);
convertView.setTag(holder);
}else{
holder = (ViewHolder)convertView.getTag();
}
holder.text.setText(map.get("itemname"));
return convertView;
}
}
布局xml
<?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="wrap_content">
<ImageView
android:id="@+id/image"
android:layout_width="50dip"
android:layout_height="50dip" android:src="@drawable/stub"
android:scaleType="centerCrop"/>
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" android:textSize="20dip"
android:layout_marginLeft="10dip"/>
</LinearLayout>
我想将imageview和itemname中的mimages附加到textview。最后我想要mimages和itemname作为listview
答案 0 :(得分:1)
不要使用声明
private static LayoutInflater inflater = null;
将其保留为
private static LayoutInflater inflater;
不要将充气机放在for ...循环和try {} catch块中。如果它抛出异常,你的充气机将不会被初始化。
在构造函数本身的第一行初始化充气器。
交替使用,
inflater = LayoutInflater.from(context);
在你的构造函数中,
答案 1 :(得分:1)
尝试
convertView = activity.getLayoutInflater().inflate(R.layout.listview, null);
答案 2 :(得分:0)
我建议你将String Array而不是JSONArray传递给ImageAdapter类。在调用setAdapter之前获取所有值,将它们存储到String数组中并传递它。您需要相应地更改ImageAdapter类。