繁体   English   中英

android中ListView中的ratingBar问题

[英]issue with ratingBar in ListView in android

我制作的listView有一个问题,它具有一个等级栏和一个texview元素。 当我更改一行的评分时,另一行也会随机更改。

代码如下。 如果有人可以帮助,那就太好了。 谢谢。

public class QuestionsInfoAdapter extends ArrayAdapter<RatingInfo> {

private final Activity context;
private final List<RatingInfo> list;

public QuestionsInfoAdapter(Activity context, List<RatingInfo> list) {
    super(context, R.layout.adapter_questionlist, list);
    this.context = context;
    this.list = list;
}

static class ViewHolder {
    public TextView questiontxt;
    RatingBar ratingBar1;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View rowView = convertView;
    try {

        if (rowView == null) {

            final LayoutInflater inflater = context.getLayoutInflater();
            rowView = inflater.inflate(R.layout.adapter_questionlist, null);
            final ViewHolder viewHolder = new ViewHolder();
            viewHolder.questiontxt = (TextView) rowView.findViewById(R.id.questiontxt);
            viewHolder.ratingBar1 = (RatingBar) rowView.findViewById(R.id.ratingBar1);

            viewHolder.ratingBar1.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

                @Override
                public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
                            CustomerRatingForm.allShowRecords.get(position).setRating("" + rating);

                }
            });
            rowView.setTag(viewHolder);

        }

        final ViewHolder holder = (ViewHolder) rowView.getTag();
        final String s = CustomerRatingForm.allShowRecords.get(position).getQuestion();
        holder.questiontxt.setText(s);
    } catch (Exception e) {
        Log.d("Exception", "Exception>>" + e);
    }

    return rowView;
}

尝试使用带有等级值的HashMap<Integer, Integer>并将每个等级栏设置在位置X

viewHolder.ratingBar1.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

            @Override
            public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
                        CustomerRatingForm.allShowRecords.get(position).setRating("" + rating);
                        hashMap.put(holder.getAdapterPosition(), rating);
            }
        });

. . . 

if (hashMap.contains(X))
    holder.ratingBar1.setRating(hashMap.get(X));
holder.questiontxt.setText(s);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM