Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
setNumStars()在android中不工作_Android_Android Linearlayout_Ratingbar - Fatal编程技术网

setNumStars()在android中不工作

setNumStars()在android中不工作,android,android-linearlayout,ratingbar,Android,Android Linearlayout,Ratingbar,我必须动态创建评级栏,其中要设置的星数从服务器传递。这里我得到了要设置的星数的值,并将其分配给setNumStars()method。我的代码和生成的设计如下所示。 在这里我得到了n个星星。提前谢谢` if(FO.answerType[i].equals("S")){ TextView quest = new TextView(this); quest.setText(FO.question[i]); quest.setTextSize(tex

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

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


        }` 

尝试设置(浮动值),这里有一个相关问题:


在这里,您可以正确地实现分级栏和设置分级方法。

只有分级栏应该放在布局中,布局中有一个属性wrap\u content。 魔法是不存在的。检查是否返回:

整数.parseInt(FO.nos[i])

突然有了0。 所以。

试试这个:

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;
        }
    }
}
公共类MovieAdapter扩展了RecyclerView.Adapter{
语境;
电影演员名单;
公共类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
线性布局;
额定杆rb;
公共视图持有者(视图项视图){
超级(项目视图);
setOnClickListener(这个);
ll=(LinearLayout)itemView.findViewById(R.id.ll);
rb=新的分级栏(上下文);
rb.setNumStars(10);
rb.设置步长(1);
ll.addView(rb);
}
@凌驾
公共void onClick(视图v){
Snackbar.make(v,movieList.get(getAdapterPosition()).getTitle(),Snackbar.LENGTH_SHORT.show();
}
}
公共电影适配器(上下文,列表电影列表)
{
this.context=上下文;
this.movieList=movieList;
}
@凌驾
public MovieAdapter.ViewHolder onCreateViewHolder(视图组视图组,int i){
View v=LayoutInflater.from(viewGroup.getContext()).flate(R.layout.row\u movie\u list,viewGroup,false);
视窗支架vh=新视窗支架(v);
返回vh;
}
@凌驾
BindViewHolder上的公共无效(MovieAdapter.ViewHolder ViewHolder,int i){
viewHolder.rb.setRating(Float.valueOf(movieList.get(i.getRating()));
}
@凌驾
public int getItemCount(){
if(movieList!=null&&!movieList.isEmpty())
{
返回movieList.size();
}
否则{
返回0;
}
}
}

您需要为此添加以下代码-

RatingBar RatingBar=新的RatingBar(本)

额定杆设置(5)

布局参数保持为
包装内容
。它会起作用的,就像

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);
输出:

对不起,老板,这也没有效果。输出仍然相同。
Integer.parseInt(FO.nos[i])
retuns值5。当我没有动态创建设计并传递值来设置星星数时,代码正在工作。我没有用于此布局的xml,我刚刚创建了线性布局并动态创建了设计。@SunilGeorgeJacob那么您需要动态设置属性。让我们来看看。