Java 如果两个项目使用Android具有相同的图像,则在GridView中隐藏项目
我正在使用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
项目第一次加载时,所有项目上都会有一个问号图像。 当用户单击项目时,背景图像将显示,如果他单击另一个具有相同图片的项目,则应隐藏这两个项目。如果没有,则再次显示问号图像。
这是怎么可能的?
这是我的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用户界面,你就完成了。先生,我尝试了很多次,但没有解决问题,先生,如果你给我发送重置和更新问题的代码,我将非常感谢你。尽你最大的努力,用你得到的新代码更新你的帖子,我们将从那里开始。