Java 如果两个项目使用Android具有相同的图像,则在GridView中隐藏项目

Java 如果两个项目使用Android具有相同的图像,则在GridView中隐藏项目,java,android,android-layout,gridview,android-listview,Java,Android,Android Layout,Gridview,Android Listview,我正在使用GridView开发一个项目,我需要在其中隐藏项目。如果用户单击具有相同图像的这两个项目,则这两个项目都应该隐藏。 项目第一次加载时,所有项目上都会有一个问号图像。 当用户单击项目时,背景图像将显示,如果他单击另一个具有相同图片的项目,则应隐藏这两个项目。如果没有,则再次显示问号图像。 这是怎么可能的? 这是我的MainActivity.java public class MainActivity extends Activity { Context ctx; int

我正在使用GridView开发一个项目,我需要在其中隐藏项目。如果用户单击具有相同图像的这两个项目,则这两个项目都应该隐藏。
项目第一次加载时,所有项目上都会有一个问号图像。 当用户单击项目时,背景图像将显示,如果他单击另一个具有相同图片的项目,则应隐藏这两个项目。如果没有,则再次显示问号图像。
这是怎么可能的?
这是我的MainActivity.java

public class MainActivity extends Activity {
    Context ctx;
    int imagesArray[];
    GridViewContent adapter;
    List<Integer> pictures;
    boolean flage=false;
    int img1=-1,img2=-1;
    public int OriginalArray[] = { R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3,R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3 };

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

        adapter= new GridViewContent(this);

        final GridView grid = (GridView) findViewById(R.id.gv_memory);
        grid.setAdapter(new GridViewContent(this));
    }
    private void shuffleArray() {
        // TODO Auto-generated method stub
        pictures= new ArrayList<Integer>();
        for (int index = 0; index < OriginalArray.length; index++)
        {
            pictures.add(OriginalArray[index]);
        }
        Collections.shuffle(pictures);

    }
    public class GridViewContent extends BaseAdapter {
        private Context context;

        //abstract change();

        public int pictureArray[]={
                R.drawable.question,
                R.drawable.question,
                R.drawable.question,
                R.drawable.question,
                R.drawable.question,
                R.drawable.question,
                R.drawable.question,
                R.drawable.question,        
        };
        public GridViewContent(Context c){
            context=c;

        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return (pictureArray.length);
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return pictureArray[position];
        }

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

        @Override
        public View getView(final int position, View convertView, ViewGroup arg2) {
            // TODO Auto-generated method stub
            convertView=LayoutInflater.from(context).inflate(R.layout.main, null);
            final ImageView myimage=new ImageView(context);
            myimage.setImageResource(pictureArray[position]);
            //myimage.setImageResource(pictures.get(pictureArray[position]));
            myimage.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
            myimage.setLayoutParams(new GridView.LayoutParams(70, 70));
            myimage.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                //  int post1,post2;

                    myimage.setImageResource(pictures.get(position));

                if(flage==false)
                {

                img1=pictures.get(position);

                flage=true;

                }else if(flage==true){
                    //post2=position;
                img2=pictures.get(position);
                checkResult();
                //notifyDataSetChanged();
                flage=false;
                }
                //else if(f)
                }
            });

            return myimage;
        }

    }
    public void checkResult() {
        if(img1==img2)
        {
            //pictures.remove(post2);

            adapter.notifyDataSetChanged();

            Toast.makeText(MainActivity.this, "Congratualatin !!!!", Toast.LENGTH_LONG).show();
        }
        else{
            Toast.makeText(MainActivity.this, "Sorry!!!!", Toast.LENGTH_LONG).show();
            final GridView grid = (GridView) findViewById(R.id.gv_memory);
            grid.setAdapter(new GridViewContent(this));
        }

    }
}
公共类MainActivity扩展活动{
上下文ctx;
int-imagesArray[];
GridViewContent适配器;
列出图片;
布尔鞭毛=假;
int img1=-1,img2=-1;
public int OriginalArray[]={R.drawable.sample_0,R.drawable.sample_1,
R.drawable.sample_2,R.drawable.sample_3,R.drawable.sample_0,R.drawable.sample_1,
R.drawable.sample_2,R.drawable.sample_3};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
shuffleArray();
适配器=新的GridViewContent(此);
最终GridView网格=(GridView)findViewById(R.id.gv_内存);
setAdapter(新的GridViewContent(this));
}
私人空间{
//TODO自动生成的方法存根
图片=新的ArrayList();
for(int index=0;index
您可以尝试并记住您单击的
GridView
项的索引。第二次单击时,请检查记住的索引。如果已填充(意味着用户已单击任意图像一次),则从适配器中提取两个可绘图项,并检查它们是否相等。如果是,请将其从适配器中删除并更新。不要忘记重置已记住的索引

在代码中,这可能如下所示:

int firstClickIndex = -1;

grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView <? > parent, View view, int position, long id) {
        if (-1 == firstClickIndex) {
            firstClickIndex = position;
        } else {
            final int fstDrawable = adapter.get(firstClickIndex);
            final int sndDrawable = adapter.get(position);

            if (fstDrawable == sndDrawable) {
                // Remove stuff, then reset firstClickIndex.
            } else {
                // Reset firstClickIndex.
            }

        }
    }
});
int firstClickIndex=-1;
grid.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾

public void onItemClick(adapter查看Sir如何在运行时从gridview中删除这些项目,请帮助我。您在适配器中实现了
remove(int index)
方法,该方法应删除
picturarray
中的相应图片(您最好使用
列表
).最后,你调用
notifyDataSetChanged()
更新GridView用户界面,你就完成了。先生,我尝试了很多次,但没有解决问题,先生,如果你给我发送重置和更新问题的代码,我将非常感谢你。尽你最大的努力,用你得到的新代码更新你的帖子,我们将从那里开始。