Android studio sqlite图像从drawable插入到数据库并检索到listview

时间:2016-01-21 01:56:38

标签: java android sqlite listview

我在将图像插入我的sqlite时遇到了问题。 这是我的插入代码

String query290 = "INSERT INTO scholar_table(Name,Top,Continent,Region,Location,Introduction,Alumni,Icon) " +
                    "values ('Wesleyan University Philippines','290','Luzon','Region 3','Nueva Ecija','WUP Intro','WUP Alumni','" + R.drawable.top1 +"')";
            sqlHandler.executeQuery(query290);
            String query291 = "INSERT INTO scholar_table(Name,Top,Continent,Region,Location,Introduction,Alumni, Icon) " +
                    "values ('University of the Philippines Diliman','1','Luzon','NCR','Quezon City','UPD Intro','UPD Alumni','" + R.drawable.top10 + "')";
            sqlHandler.executeQuery(query291);

我的SchoolDB课程

public class SchoolDB {
    private String id, name, top, continent, region, location, introduction, alumni;
    private byte[] icon;

    public SchoolDB()
    {
    }
    public SchoolDB(String id,String name,String top, String continent, String region, String location, String introduction,
                    String alumni, byte[] icon)
    {
        this.id=id;
        this.name=name;
        this.top=top;
        this.continent=continent;
        this.region=region;
        this.location=location;
        this.introduction=introduction;
        this.alumni=alumni;
        this.icon=icon;
    }

    public void setIcon(byte[] icon){
        this.icon = icon;
    }

    public void setId(String id){
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setTop(String top) {
        this.top = top;
    }

    public void setContinent(String continent) {
        this.continent = continent;
    }

    public void setRegion(String region) {
        this.region = region;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public void setIntroduction(String introduction) {
        this.introduction = introduction;
    }

    public void setAlumni(String alumni) {
        this.alumni = alumni;
    }

    public String getAlumni() {
        return alumni;
    }

    public String getIntroduction() {
        return introduction;
    }

    public String getLocation() {
        return location;
    }

    public String getRegion() {
        return region;
    }

    public String getContinent() {
        return continent;
    }

    public String getTop() {
        return top;
    }

    public String getName() {
        return name;
    }

    public String getId() {
        return id;
    }

    public byte[] getIcon() {
        return icon;
    }

}

我的处理程序

public class SQLHandler {

    public static final String DATABASE_NAME = "SCHOOLdb";
    public static final int DATABASE_VERSION = 1;
    Context context;
    SQLiteDatabase sqlDatabase;
    DatabaseHelper dbHelper;

    public SQLHandler(Context context) {

        dbHelper = new DatabaseHelper(context, DATABASE_NAME, null,
                DATABASE_VERSION);
        sqlDatabase = dbHelper.getWritableDatabase();
    }

    public void executeQuery(String query) {
        try {

            if (sqlDatabase.isOpen()) {
                sqlDatabase.close();
            }

            sqlDatabase = dbHelper.getWritableDatabase();
            sqlDatabase.execSQL(query);

        } catch (Exception e) {

            System.out.println("DATABASE ERROR " + e);
        }

    }

    public Cursor selectQuery(String query) {
        Cursor c1 = null;
        try {

            if (sqlDatabase.isOpen()) {
                sqlDatabase.close();

            }
            sqlDatabase = dbHelper.getWritableDatabase();
            c1 = sqlDatabase.rawQuery(query, null);

        } catch (Exception e) {

            System.out.println("DATABASE ERROR " + e);

        }
        return c1;

    }

}

DatabaseHelper

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "Schoolar";
    public static final String TABLE_NAME = "scholar_table";
    public static final String COL_ID = "ID";
    public static final String COL_NAME = "Name";
    public static final String COL_TOP = "Top";
    public static final String COL_CONTINENT = "Continent";
    public static final String COL_REGION = "Region";
    public static final String COL_LOCATION = "Location";
    public static final String COL_INTRODUCTION = "Introduction";
    public static final String COL_ALUMNI = "Alumni";
    public static final String COL_ICON = "Icon";


    private static final String CREATE_DATABASE = "create table " + TABLE_NAME + " (" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
            + COL_NAME + " TEXT," + COL_TOP + " TEXT," + COL_CONTINENT + " TEXT," + COL_REGION +
            " TEXT," + COL_LOCATION + " TEXT," + COL_INTRODUCTION + " TEXT," + COL_ALUMNI + " TEXT"
            + COL_ICON + " BLOB," + ")";

    SQLiteDatabase mDb;
    SQLHandler sqlHandler;

    public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
                          int version) {
        super(context, name, factory, version);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_DATABASE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

此处显示列表的代码是我的问题所在,我无法获取已插入的图像

private void showlist() {

        ArrayList<SchoolDB> contactList = new ArrayList<SchoolDB>();
        contactList.clear();
        String query = "SELECT * FROM scholar_table ORDER BY Top";
        Cursor c1 = sqlHandler.selectQuery(query);
        if (c1 != null && c1.getCount() != 0) {
            if (c1.moveToFirst()) {
                do {
                    SchoolDB contactListItems = new SchoolDB();

                    contactListItems.setId(c1.getString(c1
                            .getColumnIndex("ID")));
                    contactListItems.setName(c1.getString(c1
                            .getColumnIndex("Name")));
                    contactListItems.setTop(c1.getString(c1
                            .getColumnIndex("Top")));
                    contactListItems.setContinent(c1.getString(c1
                            .getColumnIndex("Continent")));
                    contactListItems.setRegion(c1.getString(c1
                            .getColumnIndex("Region")));
                    contactListItems.setLocation(c1.getString(c1
                            .getColumnIndex("Location")));
                    contactListItems.setIntroduction(c1.getString(c1
                            .getColumnIndex("Introduction")));
                    contactListItems.setAlumni(c1.getString(c1
                            .getColumnIndex("Alumni")));
                    //contactListItems.setIcon(c1.getBlob(c1.getColumnIndex("Icon")));
                    contactList.add(contactListItems);

                } while (c1.moveToNext());
            }
        }
        c1.close();

        TopSchoolListAdapter topSchoolListAdapter = new TopSchoolListAdapter(
                GuestView.this, contactList);
        ListViewMenu.setAdapter(topSchoolListAdapter);

    }

这是我的列表适配器。设置ImageView的另一部分问题

public class TopSchoolListAdapter extends BaseAdapter {

    Context context;
    ArrayList<SchoolDB> menuCatList;

    public TopSchoolListAdapter(Context context, ArrayList<SchoolDB> list) {

        this.context = context;
        menuCatList = list;
    }

    @Override
    public int getCount() {

        return menuCatList.size();
    }

    @Override
    public Object getItem(int position) {

        return menuCatList.get(position);
    }

    @Override
    public long getItemId(int position) {

        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup arg2) {
        SchoolDB menuCatListItems = menuCatList.get(position);

        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.custom_school_list_view, null);

        }
        ImageView itemIcon = (ImageView) convertView.findViewById(R.id.schoolLogo);

        TextView itemNum = (TextView) convertView.findViewById(R.id.schoolName);
        itemNum.setText(menuCatListItems.getName());
        TextView itemDesc = (TextView) convertView.findViewById(R.id.schoolLocation);
        itemDesc.setText(menuCatListItems.getLocation());
        TextView itemPrice = (TextView) convertView.findViewById(R.id.schoolTop);
        itemPrice.setText(menuCatListItems.getTop());

        return convertView;
    }

0 个答案:

没有答案