Ich verwende Kartenansicht und Recycler-Ansicht mit Fußzeile. Es ist Umfrageformular mit Textansicht, die Fragen und Bewertungsleiste zeigt. Es wird mehr als eine Fragen und Fußzeile haben Textarea und senden Schaltfläche. Ich habe versucht, die Bewertung der Rating-Bar mit einem Klick auf "Senden" -Taste, aber ich bekomme die Bewertung der letzten cardview der Recyclerview. Unten ist der Code, den ich verwende, um die Bewertungen zu erhalten. submitResponse() -Methode wird beim Klicken auf Senden Schaltfläche aufgerufen und ich schreibe den Code, um die Bewertung aller cardview in es zu bekommen.So erreichen Sie die Bewertung der Bewertungsleiste im Recyclerview
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);
}
}
}
Ehrfürchtig. Danke Emin Ayar. :) –
Gern geschehen :) –