android 中的评分栏 - 重置值

Rating bar in android - Reset value

我正在使用评级栏将某个字段标记为收藏。用户应该能够在将来的某个时间取消标记它。但是一旦我设置它,on-click 侦听器就无法处理该项目。

XML代码

<RatingBar
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numStars="1"
android:stepSize="1"
android:id="@+id/fav"/>

JAVA代码

fav.setOnClickListener(new View.OnClickListener(){ //fav is a ratingbar
        public void onClick(View view){
            favRest = !favRest; //A boolean variable which is set/reset each time it is clicked
            if(favRest)
            {   fav.setRating(1.0f);
                addFav(uname,hotelName);

            }
            else{
                fav.setRating(0.0f);
                removeFav(uname,hotelName);

            }

        }
    });

一旦您 rate,就无法 clear 使用触摸 RatingBar 进行评分。您只能从 1.0 to 5.0.

更改速率值

为了 clear/reset 率值,您必须使用其他操作,例如添加 Clear/Reset Button.

Button点击监听器中,可以reset使用setRating(0.0)

评分值
 resetButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Reset
            ratingBar.setRating(0.0);
        }
    });

更新:

在您的 RatingBar 中,您使用的是 android:numStars="1"android:stepSize="1"。因此,一旦您 rate 1 无法通过在 RatingBar

上使用触摸来 rate 0

从我的角度来看:

  1. 您可以使用 ImageView 代替 RatingBar
  2. res/drawable 文件夹中为 favoriteunfavorite 添加两个不同的图标
  3. 根据检查 favRest 值将所需图标设置为 ImageView

试试这个:

<ImageView
    android:layout_width="24dp"
    android:layout_height="24dp"
    android:id="@+id/fav" />


imageview = (ImageView) findViewById(R.id.fav);
fav.setOnClickListener(new View.OnClickListener(){ //fav is a ratingbar
    public void onClick(View view){
        favRest = !favRest; //A boolean variable which is set/reset each time it is clicked
        if(favRest)
        {   
            imageview.setImageResource(R.drawable.icon_favorite);
            addFav(uname,hotelName);
        } 
        else
        {
            imageview.setImageResource(R.drawable.icon_unfavorite);                
            removeFav(uname,hotelName);
        }
    }
});

希望对你有所帮助~