Java 如何检索图像数据并将其显示为ListView
我试图检索已从字节转换为位图的图像数据。但它没有显示图片,而是什么也没有显示。在logcat中,我可以清楚地看到我的图像数据变成了位图 这是我用来保存数据的java代码Java 如何检索图像数据并将其显示为ListView,java,android,listview,bitmap,Java,Android,Listview,Bitmap,我试图检索已从字节转换为位图的图像数据。但它没有显示图片,而是什么也没有显示。在logcat中,我可以清楚地看到我的图像数据变成了位图 这是我用来保存数据的java代码 items Item= new items(); db.getWritableDatabase(); Item.setName(name.getText().toString()); Item.setCategory(SpCate.getSelectedItem()
items Item= new items();
db.getWritableDatabase();
Item.setName(name.getText().toString());
Item.setCategory(SpCate.getSelectedItem().toString());
Item.setDetails(details.getText().toString());
Item.setImage(imageInByte);
db.addItemSpinner(new items());
// Save the Data in Database
MyDb entry= new MyDb(SellingItem.this);
entry.getWritableDatabase();
entry.addItemSpinner(Item);
entry.close();
Toast.makeText(getApplicationContext(), "Account Successfully Created ", Toast.LENGTH_LONG).show();
Log.d("name", Item.getName());
Log.d("category", Item.getCategory().toString());
Log.d("details", Item.getDetails());
Log.d("image", Item.getImage().toString());
Intent i=new Intent(SellingItem.this,SearchItem.class);
startActivity(i);
这是我用来检索数据的数据库
public List<items> getAllContacts() {
List<items> itemlist = new ArrayList<items>();
// Select All Query
String selectQuery = "SELECT * FROM PRODUCT ORDER BY name";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
items item = new items();
item.setId(Integer.parseInt(cursor.getString(0)));
item.setName(cursor.getString(1));
item.setImage(cursor.getBlob(2));
// Adding contact to list
itemlist.add(item);
} while (cursor.moveToNext());
}
// close inserting data from database
db.close();
// return contact list
return itemlist;
}
我不知道我的代码有什么问题,但我需要在listview中查看该图像。任何帮助都将不胜感激
这是我的CustomListAdapter
package com.example.projectonline;
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomListAdapter extends ArrayAdapter<items>{
ArrayList<items> data= new ArrayList<items>();
Context context;
int layoutResourceId;
public CustomListAdapter(Context context, int layoutResourceId, ArrayList<items> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ImageHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ImageHolder();
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
row.setTag(holder);
}
else
{
holder = (ImageHolder)row.getTag();
}
items picture = data.get(position);
holder.txtTitle.setText(picture.name);
//convert byte to bitmap take from contact class
byte[] outImage=picture.image;
ByteArrayInputStream imageStream = new ByteArrayInputStream(outImage);
Bitmap theImage = BitmapFactory.decodeStream(imageStream);
holder.imgIcon.setImageBitmap(theImage);
return row;
}
static class ImageHolder
{
ImageView imgIcon;
TextView txtTitle;
}
}
package com.example.projectonline;
导入java.io.ByteArrayInputStream;
导入java.util.ArrayList;
导入android.app.Activity;
导入android.content.Context;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
公共类CustomListAdapter扩展了ArrayAdapter{
ArrayList数据=新的ArrayList();
语境;
国际布局资源;
公共CustomListAdapter(上下文上下文、int-layoutResourceId、ArrayList数据){
超级(上下文、布局资源ID、数据);
this.layoutResourceId=layoutResourceId;
this.context=上下文;
这个数据=数据;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
ImageHolder=null;
if(行==null)
{
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(layoutResourceId,父级,false);
支架=新的图像支架();
holder.txtTitle=(TextView)row.findViewById(R.id.txtTitle);
holder.imgIcon=(ImageView)row.findViewById(R.id.imgIcon);
row.setTag(支架);
}
其他的
{
holder=(ImageHolder)行。getTag();
}
项目图片=数据。获取(位置);
holder.txtitle.setText(图片.名称);
//从contact类将字节转换为位图
字节[]outImage=picture.image;
ByteArrayInputStream imageStream=新的ByteArrayInputStream(outImage);
位图theImage=BitmapFactory.decodeStream(图像流);
holder.imgIcon.setImageBitmap(图像);
返回行;
}
静态类图像保持器
{
ImageView imgIcon;
TextView-txtTitle;
}
}
请显示您的CustomListAdapter的代码我在上面添加了我的CustomListAdapter,您能检查一下吗?除了因为您不遵守标准命名约定(例如,类名以大写字母开头,变量名以小写字母开头)以及由于额外的,您创建的不需要的变量(例如,View row=convertView;
)看起来都正常。您可能应该做些什么来验证您的位图实际上是有效的图像。谢谢您的回答。我将在该区域搜索更多内容
Id:2 ,Image: [B@428e21d8
package com.example.projectonline;
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomListAdapter extends ArrayAdapter<items>{
ArrayList<items> data= new ArrayList<items>();
Context context;
int layoutResourceId;
public CustomListAdapter(Context context, int layoutResourceId, ArrayList<items> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ImageHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ImageHolder();
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
row.setTag(holder);
}
else
{
holder = (ImageHolder)row.getTag();
}
items picture = data.get(position);
holder.txtTitle.setText(picture.name);
//convert byte to bitmap take from contact class
byte[] outImage=picture.image;
ByteArrayInputStream imageStream = new ByteArrayInputStream(outImage);
Bitmap theImage = BitmapFactory.decodeStream(imageStream);
holder.imgIcon.setImageBitmap(theImage);
return row;
}
static class ImageHolder
{
ImageView imgIcon;
TextView txtTitle;
}
}