2

我只是想知道是否有办法将布尔值(真假)传递给图像。
我在这里要做的是将图像制作为一种switch. 当我按下图像时,它将返回值 true,当我再次按下它时,它将返回值值,依此类推。

更像是图像将充当 aToggleButton或 a Checkbox,当用户单击时,它将返回 true,然后再次单击时,该值将为 false。当值为 true 时,图像将启动我的服务项目,当用户再次单击图像时,它将停止服务。

4

5 回答 5

4

每个视图都有其“setTag()”方法。您可以通过以下方式使用它。

//say 1 is for true
view.setTag(1);

//say 0 is for false
view.setTag(0);

要检索价值,

int flag = (Integer) view.getTag();
if(flag==1)
//true condition
else
//false condition

编辑

如果您在标签中设置了 id,以下将是您检索该 id 的代码。

view.setTag(view.getId());
//...
int id = (Integer) view.getTag();

代码

scanButton.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        int flag = (Integer)view.getTag();
        if(flag==1){
            //change to 0 here
            view.setTag(0);
            //rest of code
        }else
        {
            //change to 1 here
            view.setTag(1);
            //rest of code
        }
}
于 2013-07-02T05:37:47.893 回答
0

最干净的方法是创建一个新类。从 ImageView 派生它,并使用在 onTouchEvent 中收到 TOUCH_UP 运动事件时切换的标志。然后,您可以根据该标志的值覆盖您想要的任何其他行为。

于 2013-07-02T06:05:56.067 回答
0

另一种选择是扩展 ImageView 类,在其中包含您自己的属性,并在您的 OnCLickListener 中访问所需的属性。

imageView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // cast to the custom class
            CustomImageView customImageView=(CustomgImageView)v;
            //access the attributes and perform the required action. 

        }
    });
于 2013-07-02T06:11:39.143 回答
0
   public static int Count=0;
 Myimageview.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        if(Count==0)
            {
             //Toggle On
             //Start Service;
           Count=1;
             }
          else
            {
            //Toggle Off
            //Stop Service
             Count=0;
            }
    }
});
于 2013-07-02T05:36:58.663 回答
0

你可以使用一个flag

像这样的东西

boolean flag = false;

内部onClick方法

flag = !flag;

并检查是否flagtrue然后启动,service否则stopservice

于 2013-07-02T05:37:49.057 回答