2017-04-18 57 views
-2

我使用评分栏将栏位标记为最爱。用户应该能够在未来一段时间取消标记。但是,一旦我设置了它,点击聆听者就无法在该项目上工作。Android中的评分栏 - 重设值

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); 

      } 

     } 
    }); 

回答

1

一旦你rate,其不可能采用触摸上RatingBarclear率。您只能从1. 0 to 5.0更改费率值。

对于clear/reset费率值,您必须使用其他操作,如添加Clear/ResetButton

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它不可能rate 0通过使用触摸上RatingBar

从我的角度来看:

  1. 可以使用ImageView代替RatingBar
  2. 添加两种不同的图标favoriteunfavoriteres/drawable文件夹中
  3. 根据检查将所需图标设置为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); 
     } 
    } 
}); 

希望这将有助于〜

+0

是的,你是正确的。但是,一旦我设置了它,点击式监听器就不能在该项目上工作。 – user3571631

+0

发布您的XML和Java代码 – FAT

+0

发布,一旦它被设置,即使点击该项目后,它不会启动onClick – user3571631