2016-04-07 29 views
0

Kart görüntülemeyi ve altbilgiyle geri dönüştürücü görünümünü kullanıyorum. Sorular ve derecelendirme çubuğunu gösteren metin görünümünde anket formudur. Birden fazla soru olacak ve altbilgi tekstüre ve gönderme düğmesi olacak. Reyting çubuğunun reytingini, gönder düğmesine tıklamaya çalıştım ancak geri dönüsümün son kart görünümünün notunu alıyorum. Aşağıda, derecelendirmeleri almak için kullanıyorum koddur. submitResponse() yöntemi, gönder düğmesine tıklandığında çağrılır ve kodun içindeki tüm kart görünümünün derecesini almak için yazıyorum.Derecelendirme çubuğunun değerlendirme derecesi geridönüşüme nasıl girilir

public class SurveyDetailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 


private static final int FOOTER_VIEW = 1; 
static List<SurveyQuestions> surveyQuestionses= new ArrayList<>(); 
public static Activity ctx; 

public static ScheduleData scheduleData; 
public static SurveyDetailsViewHolder vh; 

public SurveyDetailsAdapter(List<SurveyQuestions> surveyQuestionses,Activity ctx,ScheduleData scheduleData) { 
    this.surveyQuestionses = surveyQuestionses; 
    this.ctx=ctx; 
    this.scheduleData=scheduleData; 
} 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     View v; 

    if (viewType == FOOTER_VIEW) { 
     v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_footer, parent, false); 
     FooterViewHolder vh = new FooterViewHolder(v); 
     return vh; 
    } 
    v = LayoutInflater.from(parent.getContext()).inflate(R.layout.survey_details_view_layout, parent, false); 
    SurveyDetailsViewHolder pvh = new SurveyDetailsViewHolder(v); 
    return pvh; 

} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

    // holder.time.setText(String.valueOf(scheduleData.get(position).starttime+"-"+String.valueOf(scheduleData.get(position).endtime))); 
    // holder.title.setText(String.valueOf(scheduleData.get(position).title)); 
    // holder.date.setText(String.valueOf(scheduleData.get(position).date)); 

    try { 
     if (holder instanceof SurveyDetailsViewHolder) { 
      vh = (SurveyDetailsViewHolder) holder; 
      vh.question.setText(surveyQuestionses.get(position).question); 

      // vh.bindView(position); 


     } else if (holder instanceof FooterViewHolder) { 
      FooterViewHolder vh = (FooterViewHolder) holder; 

     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 



@Override 
public int getItemCount() { 
    if (surveyQuestionses == null) { 
     return 0; 
    } 
    if (surveyQuestionses.size() == 0) { 
     return 1; 
    } 

    return surveyQuestionses.size()+1; 
} 

// Now define getItemViewType of your own. 
@Override 
public int getItemViewType(int position) { 
    if (position ==surveyQuestionses.size()) { 
     // This is where we'll add footer. 
     return FOOTER_VIEW; 
    } 

    return super.getItemViewType(position); 
} 

@Override 
public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
    super.onAttachedToRecyclerView(recyclerView); 
} 

public class FooterViewHolder extends RecyclerView.ViewHolder { 
    EditText comments; 
    MainActivity mainActivity = (MainActivity) ctx; 


    public FooterViewHolder(final View itemView) { 
     super(itemView); 

     itemView.findViewById(R.id.submit).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // Do whatever you want on clicking the item 

       submitResponse(); 
       Toast.makeText(mainActivity.getApplicationContext(),"Thank you.", Toast.LENGTH_SHORT).show(); 
       mainActivity.switchContent(Surveys.FRAGMENT_TAG); 
      } 
     }); 
     } 

    public void submitResponse(){ 

     comments=(EditText)itemView.findViewById(R.id.comments); 

     List<String> rat= new ArrayList<String>(); 

     for(int i=0;i<surveyQuestionses.size();i++){ 
      rat.add(String.valueOf(SurveyDetailsViewHolder.ratingBar.getRating())); 
     } 

     for(int j=0;j<rat.size();j++){ 
      Toast.makeText(mainActivity.getApplicationContext(),rat.get(0).toString()+rat.get(1).toString()+rat.get(2).toString(), Toast.LENGTH_SHORT).show(); 
     } 

    } 

    } 

// So you're done with adding a footer and its action on onClick. 
// Now set the default ViewHolder for NormalViewHolder 

public static class SurveyDetailsViewHolder extends RecyclerView.ViewHolder { 
    public static CardView cv; 
    TextView question; 
    public static RatingBar ratingBar; 
    SurveyDetailsViewHolder(View itemView) { 
     super(itemView); 

     cv = (CardView) itemView.findViewById(R.id.card_view_layout); 
     question = (TextView) itemView.findViewById(R.id.que1); 
     ratingBar = (RatingBar) itemView.findViewById(R.id.ratingBar); 




    } 
} 
} 

cevap

0

SurveyQuestion POJO'nuz var. senin POJO yeni alan ekleyin, sen Sonra derece

public class SurveyQuestion { 
    public float rating = 0.0f; //this will be default value, if user has not rate, this value will be passed 
    // Your other variabes, constructors etc. 
} 

diyoruz, sen şunları yapabilirsiniz submitResponse() yöntemine

public static class SurveyDetailsViewHolder extends RecyclerView.ViewHolder { 
public static CardView cv; 
    TextView question; 
    public static RatingBar ratingBar; 

    SurveyDetailsViewHolder(View itemView) { 
     super(itemView); 
     cv = (CardView) itemView.findViewById(R.id.card_view_layout); 
     question = (TextView) itemView.findViewById(R.id.que1); 
     ratingBar = (RatingBar) itemView.findViewById(R.id.ratingBar); 
     ratingBar .setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { 
     @Override 
     public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { 
      surveyQuestionses.get(getPosition()).rating = ratingBar.getRating(); 
     } 
    }); 

    } 
} 

Son olarak sizin RecyclerView Adaptörü üzerinde değerlendirme çubuğu değişiklikleri dinlemelisiniz surveyQuestionses listesinden puanlarınıza erişin.

public void submitResponse(){ 

    comments=(EditText)itemView.findViewById(R.id.comments); 

    List<String> rat= new ArrayList<String>(); 

    for(int i=0;i<surveyQuestionses.size();i++){ 
     rat.add(String.valueOf(surveyQuestionses.rating)); 
    } 
} 
+0

Awesome. Teşekkürler Emin Ayar. :) –

+0

Rica ederim :) –