0

I am new in Android. I have done the operation of setting images in ImageView and GridView from the res/drawable-mdpi folder manually. Now I want to set images randomly as refreshing the activity may change the picture setting which is not predefined. Following code is what I have tried. Please help me. Thank you in advance.

TestShapeActivity.java:

public class TestShapeActivity extends Activity {

Integer[] imageIDs={
        R.drawable.cir1,
        R.drawable.rect1,
        R.drawable.sqr1,
        R.drawable.tri1
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test_shape);

    ImageView imageView=
            (ImageView)findViewById(R.id.Image1);
    imageView.setImageResource(R.drawable.cir1);

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

    gridView.setOnItemClickListener(new OnItemClickListener()
    {
        public void onItemClick(AdapterView parent,
        View v,int position,long id)
        {
            if(position==0){

            Toast.makeText(getBaseContext(),
                     "Shape Matched",
                     Toast.LENGTH_LONG).show();
            startActivity(new Intent("com.example.TestShapeActivity2"));
            finish();
            }
            else{
                Toast.makeText(getBaseContext(),
                        "Please Try Again",
                        Toast.LENGTH_LONG).show();
            }
        }
    });
}   

public class ImageAdapter extends BaseAdapter
{
    private Context context;

    public ImageAdapter(Context c)
    {
        context =c;
    }
    public int getCount(){
        return imageIDs.length;
    }
    public Object getItem(int position){
        return position;
    }
    public long getItemId(int position){
        return position;
    }
    public View getView(int position,View convertView,
    ViewGroup parent)
    {
        ImageView imageView;
        if(convertView==null){
            imageView=new ImageView(context);
            imageView.setLayoutParams(new
                    GridView.LayoutParams(85,85));
            imageView.setScaleType(
                    ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(5,5,5,5);
        } else{
            imageView=(ImageView)convertView;
        }
        imageView.setImageResource(imageIDs[position]);
        return imageView;
    }
}
Eclipse-fan
  • 597
  • 1
  • 5
  • 11

2 Answers2

0

you can try this code.

   Random generator = new Random();
        yourIntResources = generator.nextInt(yourIntResources );
    view.setImageResource(yourIntResources);
Kosh
  • 6,140
  • 3
  • 36
  • 67
0
Random r; // initialize this

private int getRandomImage()
{       
    r = new Random();
    int select = r.nextInt(imageIDs.length);
    return imageIDs[select];
}   

and set it to image view as below

ImageView imageView=
        (ImageView)findViewById(R.id.Image1);
imageView.setImageResource(getRandomImage());
TheFlash
  • 5,997
  • 4
  • 41
  • 46