0

多くの人にとって愚かに見えるかもしれない問題を解決するために、私は本当にあなたの助けが必要です.

シンプルな Grindview を作成し、画像で埋める必要があります。Android デベロッパー サイトで提供されているサンプル コードを試してみましたが、問題なく動作しました。

問題は、サンプル コードがドローアブルから画像を提供することです。sqlite Db に BLOB として保存されているビットマップを入力する必要があります。

データベースはテスト済みで動作しており、問題なく BLOB からビットマップを取得できます。

私のコードでは、アクティビティが開始されても何も起こらず、画像のない白い画面が表示されます。私はこれに何時間も費やしました。あなたが私にいくつかのヒントを教えてくれることを願っています!!! 返信ありがとうございます!!! :D

これは私のクラスコードです:

package cover.me;

import java.io.ByteArrayInputStream;
import java.util.ArrayList;

import cover.me.Game.SimulationView.Cursor;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.Display;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class Gallery extends Activity{

    private LinearLayout myGallery;
    private android.database.Cursor cursor;
    private DbAdapter MyDb;
    private int x,y;
    private Display display;


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gallery);

        GridView gridview = (GridView) findViewById(R.id.gridview);
        gridview.setAdapter(new ImageAdapter(this));


    }

    public class ImageAdapter extends BaseAdapter{
        private Context mContext;
        private DbAdapter MyDb;
        private int Counter;
        private ArrayList<Bitmap> Images = new ArrayList<Bitmap>();
        private boolean ImagesLoaded = false;



        public ImageAdapter(Context c){
            mContext = c;
        }

        public int getCount() {
            return 0;
        }

        public Object getItem(int position) {
            return null;
        }

        public long getItemId(int position) {
            return 0;
        }



        // create a new ImageView for each item referenced by the Adapter
        public View getView(int position, View convertView, ViewGroup parent){

            if(ImagesLoaded == false){  //Add bitmap to Images ArrayList the first time that getView is called
                MyDb = new DbAdapter(Gallery.this);
                MyDb.open();
                cursor = MyDb.fetchAllLevels();
                cursor.moveToFirst();

                for(int i=0;i<cursor.getCount()-1;i++){
                    byte[] image = cursor.getBlob(cursor.getColumnIndex(DbAdapter.LvL_Bitmap));
                    ByteArrayInputStream inputStream = new ByteArrayInputStream(image);
                    Bitmap mBitmap = BitmapFactory.decodeStream(inputStream);
                    Images.add(mBitmap);
                    cursor.moveToNext();
                }

                cursor.close();
                MyDb.close();
                ImagesLoaded = true;
            } 

            ImageView imageView;
            if (convertView == null){
                imageView = new ImageView(mContext);
                imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(8, 8, 8, 8);
            }

            else{
                imageView = (ImageView) convertView;
                }

            imageView.setImageBitmap(Images.get(Counter));
            Counter++;



            return imageView;
        }






    }   


}

そしてここで XML

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:columnWidth="90dp"
    android:numColumns="auto_fit"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
/>

これは StackOverflow に関する私の最初の質問です。質問に何か問題があった場合は、ヒントを教えてください!!! ありがとうございました!

4

1 に答える 1

1

これは古い質問ですが、まだ回答がありません。あなたの問題は、 getCount メソッドで 0 を返していることだと思います。私はこれと非常によく似た以前のプロジェクトに取り組んでいましたが、私の中でこのエラーが見つかりました。getCount は、表示するエントリの総数を返す必要があります。

public int getCount() {
    return 0;        //Needs to return something other than zero 
}
于 2014-01-23T04:06:22.627 に答える