2015-09-07 80 views
2

我必须动态创建评分栏,其中要设置的恒星数从服务器传递。在这里,我得到了要设置的星号数值,并将其分配给setNumStars()方法。我的代码和生成的设计如下所示。 在这里,我得到了n个星星。提前感谢。 `setNumStars()在android中不工作

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


     }` 

enter image description here

回答

3

保留Layout ParamsWRAP_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); 

输出: enter image description here

+0

感谢老板这个诀窍:) –

1

尝试.setRating(浮点值),在这里你有一个相关的问题:Set value in RatingBar

有你有正确实施的RatingBar和setRating方法。

1

Just RatingBar应放置在布局中,该布局有一个属性wrap_content。 魔法不存在。检查返回:

的Integer.parseInt(FO.nos [I])

突然有0 See it如此。

1

试试这个:

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; 
     } 
    } 
} 
+0

对不起老板这也没有影响。输出仍然是相同的。 –

+0

@SunilGeorgeJacob我已经使用上面的代码 – SANAT

+0

'Integer.parseInt(FO.nos [i])'retuns value 5.代码工作时,我不动态创建设计并传递值来设置星号。 –

0

你需要把以下公司招聘

的RatingBar的RatingBar =新的RatingBar代码(此);
ratingBar.setRating(5);

+0

我试过这个,这个也不行。 –