2017-04-18 26 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