setNumStars() 在 android 中不工作
setNumStars() not working in android
我必须动态创建评级栏,其中要设置的星数是从服务器传递过来的。在这里,我获取要设置的星星数量的值并将其分配给 setNumStars()
方法。我的代码和生成的设计如下所示。
这里我提前得到了n个stars.Thanks。 `
if(FO.answerType[i].equals("S")){
TextView quest = new TextView(this);
quest.setText(FO.question[i]);
quest.setTextSize(textsize);
quest.setTypeface(Typeface.DEFAULT_BOLD);
quest.setTextColor(Color.BLACK);
quest.setPadding(10, 6, 10, 6);
quest.setGravity(Gravity.LEFT);
lila.addView(quest);
RatingBar rate = new RatingBar(this);
rate.setNumStars(Integer.parseInt(FO.nos[i]));
lila.addView(rate);
}`
试试 .setRating(float value) ,你有一个相关的问题:Set value in RatingBar
您已经正确实现了 RatingBar 和 setRating 方法。
只需将RatingBar 放在布局中,其中有一个属性 wrap_content。
魔法不存在。检查 returns:
Integer.parseInt(FO.nos[i])
突然有0个。
See it所以。
试试这个:
rate.setRating(Float.valueOf(FO.nos[i]));
动态搜索栏编辑:
public class MovieAdapter extends RecyclerView.Adapter<MovieAdapter.ViewHolder> {
Context context;
List<PostVO> movieList;
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
LinearLayout ll;
RatingBar rb;
public ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
ll = (LinearLayout) itemView.findViewById(R.id.ll);
rb = new RatingBar(context);
rb.setNumStars(10);
rb.setStepSize(1);
ll.addView(rb);
}
@Override
public void onClick(View v) {
Snackbar.make(v, movieList.get(getAdapterPosition()).getTitle(), Snackbar.LENGTH_SHORT).show();
}
}
public MovieAdapter(Context context,List<PostVO> movieList)
{
this.context = context;
this.movieList = movieList;
}
@Override
public MovieAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_movie_list, viewGroup, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(MovieAdapter.ViewHolder viewHolder, int i) {
viewHolder.rb.setRating(Float.valueOf(movieList.get(i).getRating()));
}
@Override
public int getItemCount() {
if(movieList != null && !movieList.isEmpty())
{
return movieList.size();
}
else {
return 0;
}
}
}
您需要为此输入以下代码-
RatingBar ratingBar = new RatingBar(this);
ratingBar.setRating(5);
将 Layout Params
保持为 WRAP_CONTENT
。它会起到作用,比如
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.container);
RatingBar rate = new RatingBar(this);
rate.setRating(2);
rate.setNumStars(4);
rate.setProgress(1);
rate.setLayoutParams(new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT));
frameLayout.addView(rate);
输出:
我必须动态创建评级栏,其中要设置的星数是从服务器传递过来的。在这里,我获取要设置的星星数量的值并将其分配给 setNumStars()
方法。我的代码和生成的设计如下所示。
这里我提前得到了n个stars.Thanks。 `
if(FO.answerType[i].equals("S")){
TextView quest = new TextView(this);
quest.setText(FO.question[i]);
quest.setTextSize(textsize);
quest.setTypeface(Typeface.DEFAULT_BOLD);
quest.setTextColor(Color.BLACK);
quest.setPadding(10, 6, 10, 6);
quest.setGravity(Gravity.LEFT);
lila.addView(quest);
RatingBar rate = new RatingBar(this);
rate.setNumStars(Integer.parseInt(FO.nos[i]));
lila.addView(rate);
}`
试试 .setRating(float value) ,你有一个相关的问题:Set value in RatingBar
您已经正确实现了 RatingBar 和 setRating 方法。
只需将RatingBar 放在布局中,其中有一个属性 wrap_content。 魔法不存在。检查 returns:
Integer.parseInt(FO.nos[i])
突然有0个。 See it所以。
试试这个:
rate.setRating(Float.valueOf(FO.nos[i]));
动态搜索栏编辑:
public class MovieAdapter extends RecyclerView.Adapter<MovieAdapter.ViewHolder> {
Context context;
List<PostVO> movieList;
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
LinearLayout ll;
RatingBar rb;
public ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
ll = (LinearLayout) itemView.findViewById(R.id.ll);
rb = new RatingBar(context);
rb.setNumStars(10);
rb.setStepSize(1);
ll.addView(rb);
}
@Override
public void onClick(View v) {
Snackbar.make(v, movieList.get(getAdapterPosition()).getTitle(), Snackbar.LENGTH_SHORT).show();
}
}
public MovieAdapter(Context context,List<PostVO> movieList)
{
this.context = context;
this.movieList = movieList;
}
@Override
public MovieAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_movie_list, viewGroup, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(MovieAdapter.ViewHolder viewHolder, int i) {
viewHolder.rb.setRating(Float.valueOf(movieList.get(i).getRating()));
}
@Override
public int getItemCount() {
if(movieList != null && !movieList.isEmpty())
{
return movieList.size();
}
else {
return 0;
}
}
}
您需要为此输入以下代码-
RatingBar ratingBar = new RatingBar(this);
ratingBar.setRating(5);
将 Layout Params
保持为 WRAP_CONTENT
。它会起到作用,比如
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.container);
RatingBar rate = new RatingBar(this);
rate.setRating(2);
rate.setNumStars(4);
rate.setProgress(1);
rate.setLayoutParams(new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT));
frameLayout.addView(rate);
输出: