0

4*4 の画像セットを表示するために、GridView でカスタム ImageAdapter を使用しています。アダプターによって返される画像の数を動的に渡すことができるようにしたいと考えています。これまでに見たチュートリアル/質問はすべて、事前に設定された画像の数に基づいています。たとえば、最初の 30 のみを返します。私はそうではありませんint を取り、配列からその数の画像を返すメソッドを実装する方法を確認してください。どんな助けでも大歓迎です。どうもありがとう

これは、これまでのところ、すべての画像をグリッド ビューに返すものです。

イメージアダプター

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;    
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter{
    private Context mContext;

// Keep all Images in array
public Integer[] mMona = {
        R.drawable.joconde_1_1, R.drawable.joconde_1_2, R.drawable.joconde_1_3,R.drawable.joconde_1_4,
        R.drawable.joconde_2_1, R.drawable.joconde_2_2, R.drawable.joconde_2_3,R.drawable.joconde_2_4,
        R.drawable.joconde_3_1, R.drawable.joconde_3_2, R.drawable.joconde_3_3,R.drawable.joconde_3_4,
        R.drawable.joconde_4_1, R.drawable.joconde_4_2, R.drawable.joconde_4_3,R.drawable.joconde_4_4,
};

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

@Override
public int getCount() {
    return mMona.length;
}

@Override
public Object getItem(int position) {
    return mMona[position];
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mMona[position]);
    return imageView;
}

}

活動クラス

 ImageAdapter imageAdapter = new ImageAdapter(this);
        gridView.setAdapter(imageAdapter);
4

1 に答える 1

1

Image Adapter の引数として int 配列を使用できます。その配列には、画像配列内の画像の必要な位置があり、一時配列または返される画像を作成します。私はそれをテストしていませんが、私は働くべきだと思います。変更されたコードはこちら..

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;    
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter{
    private Context mContext;
    Integer []retuning;

// Keep all Images in array
public Integer[] mMona = {
        R.drawable.joconde_1_1, R.drawable.joconde_1_2, R.drawable.joconde_1_3,R.drawable.joconde_1_4,
        R.drawable.joconde_2_1, R.drawable.joconde_2_2, R.drawable.joconde_2_3,R.drawable.joconde_2_4,
        R.drawable.joconde_3_1, R.drawable.joconde_3_2, R.drawable.joconde_3_3,R.drawable.joconde_3_4,
        R.drawable.joconde_4_1, R.drawable.joconde_4_2, R.drawable.joconde_4_3,R.drawable.joconde_4_4,
};



public ImageAdapter(Context c, int ...pos){
    mContext = c;
    //Added this line...
    retuning= new Integer[pos.length];
    for(int i=0;i<pos.length;i++){
        if(i<mMona.length-1){
            retuning[i]=mMona[pos[i]];
        }
    }
}

@Override
public int getCount() {
    return retuning.length;
}

@Override
public Object getItem(int position) {
    return retuning[position];
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mMona[position]);
    return imageView;
}
}

アクティビティ クラスで、このアダプタを次のように呼び出します。

int []img={0,2,3,5};
ImageAdapter imageAdapter = new ImageAdapter(this,img);
gridView.setAdapter(imageAdapter);
于 2013-06-03T09:13:16.080 に答える