缩略图与gridview

时间:2016-08-24 07:39:52

标签: java android android-gridview

我在android中创建了一个简单的GridView应用程序,其中点击的图像在新窗口中以全屏模式打开。

申请图片:

enter image description here

enter image description here

我还将随机图像生成代码放在 getView 方法中,如下所示 ImageAdapter 类:

@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
    ImageView iv;
    shuffleArray(images);
    if(arg1!=null){
        iv=(ImageView)arg1;
    }else{
        iv=new ImageView(context);
        iv.setLayoutParams(new GridView.LayoutParams(80,80)); //resizing the picture according to the params
        iv.setScaleType(ScaleType.CENTER_CROP);//images will be cropped towards center
        iv.setPadding(8, 8, 8, 8); //padding of all sides if images vary then less padding more crop to fit imageview
    }

    iv.setImageResource( images[arg0]);
    return iv;
}

static void shuffleArray(int[] images2) {
    // TODO Auto-generated method stub
    Random rnd=new Random();
    for(int i=images2.length-1;i>=0;i--){
        int index=rnd.nextInt(i+1);
        int temp=images2[index];
        images2[index]=images2[i];
        images2[i]=temp;
    }

}

每次打开应用程序时,图片都会出现问题。

现在问题如下:

  • 每当我点击图片缩略图时,都会打开另一张图片 新窗口。

  • 相同的图片缩略图在GridView Activity中显示两个或更多 不同的图像。

  • 我也试图设置应用程序在运行时的条件 禁用所有硬件按钮

AND

  • 每当用户点击时,该应用应该是特定的NO图像 自动关闭消息。

我应该如何实现上述问题的解决方案

我的整个源代码: 主要Activity.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    GridView gv=(GridView)findViewById(R.id.gridView);
    gv.setAdapter(new ImageAdapter(getApplicationContext()));

    gv.setOnItemClickListener(new OnItemClickListener(){

        private boolean[] isSpecificImage;{
            isSpecificImage[0]=true;
        }





        @Override
        public void onItemClick(AdapterView<?> parentView, View iv, int position, long id) {
            // TODO Auto-generated method stub

                Toast.makeText(getApplicationContext(), ""+position, Toast.LENGTH_SHORT).show();
                Intent i=new Intent(getApplicationContext(),ImageDetail.class);  // for click open that image as new activity
                i.putExtra("id", position);
                startActivity(i);



        }

    });

ImageAdapter类

public class ImageAdapter extends BaseAdapter {

私有上下文上下文;     public static int [] images = {              R.drawable.goku,R.drawable.gohan,R.drawable.vegeta,R.drawable.broly,R.drawable.buu      };

public ImageAdapter(Context applicationContext) {
     context = applicationContext;
        shuffleArray(images);
}

@Override
public int getCount() {
    // no of items to be displayed
    return images.length;
}

@Override
public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public long getItemId(int arg0) {
    // TODO Auto-generated method stub
    return 0;
}


@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
    ImageView iv;

    if(arg1!=null){
        iv=(ImageView)arg1;
    }else{
        iv=new ImageView(context);
        iv.setLayoutParams(new GridView.LayoutParams(80,80)); //resizing the picture according to the params
        iv.setScaleType(ScaleType.CENTER_CROP);//images will be cropped towards center
        iv.setPadding(8, 8, 8, 8); //padding of all sides if images vary then less padding more crop to fit imageview
    }

    iv.setImageResource( images[arg0]);
    return iv;
}

 void shuffleArray(int[] images2) {
    // TODO Auto-generated method stub
    Random rnd=new Random();
    for(int i=images2.length-1;i>=0;i--){
        int index=rnd.nextInt(i+1);
        int temp=images2[index];
        images2[index]=images2[i];
        images2[i]=temp;
    }

}

}

ImageDetail类

public class ImageDetail extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.imagedetail);
    Intent i=getIntent();
    int position =(Integer) i.getExtras().get("id");
    ImageView iv=(ImageView)findViewById(R.id.ivdbz);
    iv.setImageResource(ImageAdapter.images[position]);
}

}

enter image description here

2 个答案:

答案 0 :(得分:0)

shuffleArray(images); 

该声明不属于getView()。每次调用getView()时都不应该随机播放。

把它叫到其他地方。

答案 1 :(得分:0)

您可以使用OnClickItemListener中的位置放置finish()

你的gridView中的

条件