2015-09-07 79 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

我試過這個,這個也不行。 –