2014-12-27 96 views
0

在我的应用程序中,我以编程方式创建了一个图像视图。我动态创建了相同类型的10幅图像。每当我点击图像时,我想将图像更改为另一图像,如果再次按下图像,它将转向上一图像。我为此写了代码。但是每当我点击特定图像时,更改就会应用于其他图像。如何将一个图像更改为另一个图像?

im = new ImageView(this); 
    @Override 
    public void onClick(View v) { 

     boolean flag = true; 



     for (int k=0;k<sheetdetails.size();k++){ 

      if(sheetdetails.get(k).get("SeatNo").equalsIgnoreCase(v.getTag().toString())&&sheetdetails.get(k).get("IsAvailable").equalsIgnoreCase("true")){ 

       if(flag) 
       {  
        im.setImageResource(R.drawable.seat); 
        flag=false; 
       } 
       else 
       { 
        im.setImageResource(R.drawable.selectedseat); 
        flag=true; 
       }    


      } 

      } 


    } 
+0

我没有看到任何你设置为不同的图像。你可以请澄清你的设置 – Shiv

+0

以前它是座位图像后,点击它将改变到选定的座位,反之亦然(设置与标志) –

+0

您设置标志为真**每次点击**。所以,它总是**真**。更好地将该指令移到外面。除此之外(假设你在xml布局中设置了onClick()),你只声明** 1 ImageView **,而不是10.并且你不区分哪个**被点击过。 –

回答

0

此刻程序执行if分支以及else分支,因为您输入的方法是flag = true;

if(flag) 
      {  
       im.setImageResource(R.drawable.seat); 
       flag=false; 
      } 
else 
      { 
       im.setImageResource(R.drawable.selectedseat); 
       flag=true; 
      } 

所以你输入第一个if,那么你设置的标志为false,所以你还要输入else分支。要么改变程序的流程,要么初始化一个临时变量。

当你这样做时,if/else结构是不必要的,因为你每次都输入。

+0

我的代码也是这样的像这样na ????????????? –

+0

的确,我只是想告诉你这个错误/问题,因为这个if/else结构背后没有任何意义。如果你需要一个if分支,最好用正确的方式使用一个临时变量。 – t3s0

+0

那么我该如何解决我的问题。请您告诉我 –

相关问题