Android listview中的分级栏
当我们在android中向下滚动时,评级栏被重置,我需要将评级反馈的响应发送到服务器,但当我在android的listview中向下滚动时,评级栏将重置或不保存Android listview中的分级栏,android,listview,Android,Listview,当我们在android中向下滚动时,评级栏被重置,我需要将评级反馈的响应发送到服务器,但当我在android的listview中向下滚动时,评级栏将重置或不保存 public class FacultyListAdapter extends BaseAdapter { private final Context context; public FacultyListAdapter(Context context) { this.cont
public class FacultyListAdapter extends BaseAdapter {
private final Context context;
public FacultyListAdapter(Context context) {
this.context = context;
if (!facultylist.isEmpty())
courseEmptyLayout.setVisibility(LinearLayout.GONE);
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
final ViewHolder TabviewHolder;
if (convertView == null) {
TabviewHolder = new ViewHolder();
LayoutInflater inflater = getLayoutInflater();
convertView = inflater.inflate(R.layout.list_item_feedback,
parent, false);
TabviewHolder.FacultyName = (TextView) convertView.findViewById(R.id.FacultyName);//facultyname
TabviewHolder.rating = (RatingBar) convertView.findViewById(R.id.rating);//rating starts
TabviewHolder.Submit = (Button) convertView.findViewById(R.id.btnSubmit);
// Save the holder with the view
convertView.setTag(TabviewHolder);
} else {
TabviewHolder = (ViewHolder) convertView.getTag();
}
final Faculty mFac = facultylist.get(position);//*****************************NOTICE
TabviewHolder.FacultyName.setText(mFac.getEmployeename());
TabviewHolder.rating.setTag(position);
TabviewHolder.rating.setRating(mFac.getRatingStar());
// TabviewHolder.ModuleName.setText(mFac.getSubject());
TabviewHolder.rating.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
feedbackresult =String.valueOf(rating);
TabviewHolder.rating.setRating(Float.parseFloat(feedbackresult));
Log.d("feedback","feedback is: "+ feedbackresult);
}
});
return convertView;
}
/*private RatingBar.OnRatingBarChangeListener onRatingChangedListener(final ViewHolder holder, final int position) {
return new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float v, boolean b) {
FacultyName item = getItem(position);
item.setRatingStar(v);
Log.i("Adapter", "star: " + v);
}
};
}*/
@Override
public int getCount() {
return facultylist.size();
}
@Override
public Object getItem(int position) {return facultylist.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
}
Listview和recyclerview根据滚动时传递给它的列表自动刷新(重新创建)视图 你必须将你的评分存储到你的列表中(我认为它是facultylist),其中包含所有详细信息 当用户单击评级时,您需要将评级存储到特定索引。然后,您的列表视图根据列表中的值显示正确的评级。请参阅此链接
公共类反馈适配器扩展BaseAdapter{
静态语境;
列表行;
视窗座;
公共反馈适配器(上下文,列表行)
{
this.context=上下文;
this.row=行;
}
私有类视窗持有者{
TextView tv\u slno、tv\u产品名称、tv\u时间;
额定杆rb_额定值;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
LayoutInflater mInflater=(LayoutInflater)context.getSystemService(Activity.LAYOUT\u INFLATER\u SERVICE);
if(convertView==null)
{
convertView=mInflater.inflate(R.layout.custom\u feedback\u row\u格式,父级,false);
holder=新的ViewHolder();
holder.tv\u slno=(TextView)convertView.findViewById(R.id.tv\u slno);
holder.tv_time=(TextView)convertView.findViewById(R.id.tv_time);
holder.tv\u产品名=(TextView)convertView.findViewById(R.id.tv\u产品名);
holder.rb_productrating=(RatingBar)convertView.findViewById(R.id.rb_productrating);
convertView.setTag(支架);
}否则
{
holder=(ViewHolder)convertView.getTag();
}
holder.rb_productrating.setOnRatingBarChangeListener(onRatingChangedListener(holder,position));
支架.rb_productrating.setTag(位置);
holder.tv_slno.setText(String.valueOf(位置+1));
holder.tv_time.setText(getItem(position.gettime());
holder.tv\u productname.setText(getItem(position).getproductsName());
浮动评级=float.valueOf(getItem(position).getrating());
持有人。rb_产品评级。设定评级(评级);
返回视图;
}
private RatingBar.OnRatingBarChangeListener onRatingChangedListener(最终视图持有者,最终整型位置)
{
返回新的RatingBar.OnRatingBarChangeListener(){
@凌驾
公共无效率已更改(率条率条、浮动率条、布尔b)
{
FeedbackRowDetails项=行获取(位置);
int roundoff_rating=(int)Math.round(rating);
额定值设定(四舍五入额定值);
项目.设置等级(字符串.值(舍入等级));
}
};
}
@凌驾
public int getCount(){
返回row.size();
}
@凌驾
公共反馈行详细信息getItem(内部位置)
{
返回行。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回row.indexOf(getItem(position));
}
}
将您的评级条值保存在模态类中,然后从模态移除条件中获取该值如果(convertView==null)
,则应该可以做到这一点
public class FeedbackAdapter extends BaseAdapter {
static Context context;
List<FeedbackRowDetails> row;
ViewHolder holder;
public FeedbackAdapter(Context context,List<FeedbackRowDetails> row)
{
this.context = context;
this.row =row;
}
private class ViewHolder {
TextView tv_slno, tv_productname, tv_time;
RatingBar rb_productrating;
}
@Override
public View getView( final int position, View convertView, ViewGroup parent) {
LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.custom_feedback_row_format,parent, false);
holder = new ViewHolder();
holder.tv_slno = (TextView) convertView.findViewById(R.id.tv_slno);
holder.tv_time = (TextView) convertView.findViewById(R.id.tv_time);
holder.tv_productname = (TextView) convertView.findViewById(R.id.tv_productname);
holder.rb_productrating=(RatingBar) convertView.findViewById(R.id.rb_productrating);
convertView.setTag(holder);
} else
{
holder = (ViewHolder) convertView.getTag();
}
holder.rb_productrating.setOnRatingBarChangeListener(onRatingChangedListener(holder, position));
holder.rb_productrating.setTag(position);
holder.tv_slno.setText(String.valueOf(position + 1));
holder.tv_time.setText(getItem(position).gettime());
holder.tv_productname.setText(getItem(position).getproductsName());
float rating=Float.valueOf(getItem(position).getrating());
holder.rb_productrating.setRating(rating);
return convertView;
}
private RatingBar.OnRatingBarChangeListener onRatingChangedListener(final ViewHolder holder, final int position)
{
return new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean b)
{
FeedbackRowDetails item = row.get(position);
int roundoff_rating = (int)Math.round(rating);
ratingBar.setRating(roundoff_rating);
item.setrating(String.valueOf(roundoff_rating));
}
};
}
@Override
public int getCount() {
return row.size();
}
@Override
public FeedbackRowDetails getItem(int position)
{
return row.get(position);
}
@Override
public long getItemId(int position) {
return row.indexOf(getItem(position));
}
}