Java 如何检索图像数据并将其显示为ListView

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()

我试图检索已从字节转换为位图的图像数据。但它没有显示图片,而是什么也没有显示。在logcat中,我可以清楚地看到我的图像数据变成了位图

这是我用来保存数据的java代码

        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;
        }

}