0

したがって、4 つの列を持つ apps という名前のテーブルと、drawable を byte[] に変換し、列 "App_icon" に blob として格納する App_icon という名前の列があります。表示されているように、テーブルからフィールドを取得するリストビューがあります。ブロブを画像に変換して、左隅に画像を表示する必要もあります。データベースからテキスト データを取得して表示するために使用するコードは次のとおりです。

mySQLiteAdapter.open();

    String[] arrayColumns = new String[] { Dbhelper.KEY_PKG,
            Dbhelper.KEY_APP, };
    int[] arrayViewIDs = new int[] { R.id.appname, R.id.pkgname };

    cursor = mySQLiteAdapter.getAllFolders();

    adapter = new SimpleCursorAdapter(
            getActivity().getApplicationContext(), R.layout.listview_items,
            cursor, arrayColumns, arrayViewIDs);
    lv.setAdapter(adapter);
    mySQLiteAdapter.close();

KEY_PKG と KEY_APP は、textview に表示される他のテーブル名 (appname と pkgname) です。画像をそれぞれのフィールドにバインドする方法について、誰かがサンプル コードを提供できますか? よろしく、ビジャイ

編集:すべての行から「App_icon」列の値のみを取得して配列に格納する方法を誰かが投稿できる場合は? それは役に立ちます

編集2:以下は、画像を取得するために使用される方法です

adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
        @Override
        public boolean setViewValue (View view, Cursor cursor, int columnIndex){
            if (view.getId() == R.id.app_icon) {
                ImageView IV=(ImageView) view;
                Bitmap icon;
                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inPreferredConfig = Bitmap.Config.ARGB_8888;
                byte[] image = null;
                Cursor images = mySQLiteAdapter.geticon();
                int rows = images.getCount();


                for(int i=1;i<=rows;i++){
                    image = mySQLiteAdapter.getIcon(i);            
                    icon = BitmapFactory.decodeByteArray(image , 0, image .length, options);
                    Toast.makeText(getActivity(), "executes"+rows, Toast.LENGTH_SHORT).show();
                    IV.setImageBitmap(icon);
                }

                //IV.setBackgroundColor(Color.TRANSPARENT);
                return true;
           }
            return false;
}

});
4

2 に答える 2

0

最初にバイト配列をビットマップに変換してから、ビューにバインドします。そのため、カスタムアダプターで解決できる場合があります。

于 2013-09-06T14:29:28.467 に答える
0

byte[] をビットマップに変換する単純な関数を次に示します。

public static Bitmap getBitmapFromBytes(byte[] bytes)
{
    Bitmap bmp;
    bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
    Bitmap mutableBitmap = bmp.copy(Bitmap.Config.ARGB_8888, true);
    return mutableBitmap;
}
于 2013-09-06T14:34:31.740 に答える