我使用评级栏将字段标记为收藏。用户应该能够在将来的某个时间取消标记。但是一旦我设置它,点击监听器就不能处理该项目。
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);
}
}
});
答案 0 :(得分:2)
rate
clear
后,使用RatingBar
上的触摸无法0 to 5.0
。您只能从1更改费率值。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
。因此,一旦rate 0
使用RatingBar
上的触摸<{1}}就无法ImageView
从我的观点来看:
RatingBar
代替favorite
unfavorite
文件夹中为res/drawable
和ImageView
添加两个不同的图标favRest
值检查,将所需图标设置为<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);
}
}
});
。试试这个:
{{1}}
希望这会有所帮助〜