2017-09-19 10 views
0

나는 ratingView와 texview 요소가있는 listView에 문제가 있습니다. 한 행의 등급을 변경하면 다른 행도 무작위로 변경됩니다.안드로이드의 ListView에서 ratingBar와 함께 문제가 발생했습니다.

코드는 다음과 같습니다. 누구라도 도움이된다면 도움이 될 것입니다. 감사.

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

와 위치 X에서 각 등급 표시 줄을 설정 한 후 viewHolder.ratingBar1에 값을 넣어 때 getView를 호출합니다. – tebitoq

답변

0

시도는 평가 값 HashMap<Integer, Integer>을 사용하고 선택되었을 때 등급을 저장해야

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