2014-03-24 44 views
1

我的代码有问题。当你点击列表中的一个项目时,它应该改变显示在文本旁边的图像。但是,当我点击时没有任何变化。更改图片点击Android列表查看

我在做什么错?

public class ChangeImage extends ListActivity { 

boolean state1 = true; 
boolean state2 = false; 
boolean state3 = false; 

public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    String[] values = new String[] { 
      "ListItem1", 
      "ListItem2", 
      "ListItem3"}; 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      R.layout.change_image, R.id.label, values); 
    setListAdapter(adapter); 
} 

@Override 
public void onListItemClick(ListView l, View v, int position, long id){ 
    if(state1){ 
     ImageView arrowView=(ImageView) findViewById(R.id.labelimage); 
     arrowView.setImageResource(R.drawable.icon1);} 
    else if(state2){ 
     ImageView arrowView=(ImageView) findViewById(R.id.labelimage); 
     arrowView.setImageResource(R.drawable.icon2);} 
    else if(state3){ 
     ImageView arrowView=(ImageView) findViewById(R.id.labelimage); 
     arrowView.setImageResource(R.drawable.icon3);} 
    } 
}  

谢谢您的解答^^

+1

根据您发布的代码,** **状态1始终是真实的,并** state2 **和** state3 **始终为false。这将导致箭头视图始终设置为R.drawable.icon1。图像的默认图标是什么? – anthonycr

+0

默认图标是icon3 – user3410806

+0

这是您所有活动的代码吗?尝试把print语句放在每个** if if语句中的onListItemClick方法中,看看它们是否被执行过,可能是因为你在代码的其他地方将所有布尔值设置为false。 – anthonycr

回答

0

设置和重置布尔标志正确,并更改画面采用了触摸操作...

if(state1) { state3=false;state1=false;state2=true; }

+0

我不明白你的答案。你能详细一点吗? – user3410806

+0

使用此代码:ImageView imageView =(ImageView)lView.getChildAt(position).findViewById(R.id.checkbox); imageView.setImageResource(R.drawable.checkbox); – prakash

+0

当我尝试使用此代码时,出现此错误:lView无法解析。 – user3410806

0

使用此。

public void onListItemClick(ListView l, View v, int position, long id){ 

    switch (position) { 
     case 0: 
     ImageView imageView=(ImageView) findViewById(R.id.labelimage); 
     imageView.setImageResource(R.drawable.icon2); 
     break; 
     case 0: 
     ImageView arrowView=(ImageView) findViewById(R.id.labelimage); 
     imageView.setImageResource(R.drawable.icon3); 
     break; 
     case 0: 
     ImageView arrowView=(ImageView) findViewById(R.id.labelimage); 
     imageView.setImageResource(R.drawable.icon1); 
     break; 
    default: 
     break; 
    } 

}  
+0

您的解决方案不起作用。 Eclipse不能编译,因为你不能有重复的情况。当我尝试更改这些案例时,它并没有达到我想要的应用程序的要求。当我点击第二和第三位时,它切换了第一张图片。当用户点击第1项时,我希望图像变成图标2,当他再次点击时,我希望它变成图标3.就像Cut The Rope用糖果做的一样。当你点击糖果时,它变成了甜甜圈。当你再次点击时,它会变成一个蛋糕。这正是我想要做的。 – user3410806