ListView中嵌套 RatingBar,EditText,GridView, 类似淘宝买后的店家评论

  listview中嵌套ratingbar,在上下滑动的过程中会出现 你点击后的ratingbar数值不断变化,布局复用造成的问题之一;

  嵌套EditText说白了也是布局复用的问题,还有就是点击EditText时焦点跳走。

  记录一下        


代码:



private Context context;
Builder alDialog;
private int index = -1;
private String[]itemStr;
public CopyOfPublishCommentsAdapter(Context context) {
this.context = context;
itemStr=new String[5];
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ItemView itemView;
PublishCommentBean commentBean = entities.get(position);
if (null == convertView) {
convertView = LayoutInflater.from(context).inflate(
R.layout.surround_publish_comment_item, null);
itemView = new ItemView();
itemView.ratingBar1 = (RatingBar) convertView
.findViewById(R.id.ratingBar1);
itemView.contentEt = (EditText) convertView
.findViewById(R.id.et_content);
itemView.myGridView = (MyGridview) convertView
.findViewById(R.id.gv_currentpics);
itemView.submitTv = (TextView) convertView
.findViewById(R.id.submit_tv);
itemView.picIg = (ImageView) convertView
.findViewById(R.id.imageView1);
convertView.setTag(itemView);
} else {
itemView = (ItemView) convertView.getTag();
}
itemView.pos=position;

// itemView.contentEt.setTag(position);
itemView.ratingBar1.setTag(position);
itemView.ratingBar1.setRating(commentBean.getRating());
itemView.ratingBar1
.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {


@Override
public void onRatingChanged(RatingBar ratingBar,
float rating, boolean fromUser) {
if (fromUser) {
entities.get((Integer) ratingBar.getTag()).setRating(
rating);
}
}
});


// itemView.contentEt.setText(commentBean.getContent());
itemView.contentEt.setText(itemStr[position]);
itemView.contentEt.addTextChangedListener(new TextWatcher() {
 
            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                


            }


            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {
                
           
            }


            @Override
            public void afterTextChanged(Editable arg0) {
                if(arg0.length()>300){
                ToastUtil.show("");
                itemView.contentEt.setTextKeepState(arg0);
                }else{
                itemStr[itemView.pos] = arg0.toString();
                }
            }
        });


Util.displayImage(context, commentBean.getGoodsPic(), itemView.picIg);
final AddPicAdapter adapter= commentBean.getPicAdapter();
adapter.setPos(position);
itemView.myGridView.setAdapter(adapter);
itemView.myGridView
.setOnItemLongClickListener(new OnItemLongClickListener() {


@Override
public boolean onItemLongClick(AdapterView<?> parent,
View view, int pos, long id) {
PublishCommentBean commentBean = entities.get(itemView.pos);
if (pos != commentBean.getList().size() - 1) {
delete(context, pos, commentBean.getList(),
adapter); 
}
return true;
}
});

itemView.submitTv.setOnClickListener(new MyUpClick(position, context));
return convertView;
}


public class AddPicAdapter extends BaseAdapter {


private Context context;
private List<String> list;
private int pos;
public AddPicAdapter(Context context, List<String> list,int pos) {
this.context = context;
this.list = list;
this.pos=pos;
}


@Override
public View getView(int position, View view, ViewGroup parent) {
ItemView item = null;
if (view == null) {
item = new ItemView();
view = LayoutInflater.from(context).inflate(R.layout.ap_add_pic,
null);
item.iv_pic = (ImageView) view.findViewById(R.id.iv_pic);
item.tv_add = (TextView) view.findViewById(R.id.tv_add);
view.setTag(item);
} else {
item = (ItemView) view.getTag();
}


String value = list.get(position);
if (position != list.size() - 1) {
item.tv_add.setVisibility(View.GONE);
item.iv_pic.setVisibility(View.VISIBLE);
Util.displayImage(context, "file:///" + value, item.iv_pic);
} else {
item.iv_pic.setVisibility(View.GONE);
item.tv_add.setVisibility(View.VISIBLE);
item.tv_add.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (list.size() < 10) {
String photo = Constants.IMG_CACHE
+ Util.getStringToday() + ".jpg";
if (context instanceof SendMessageActivity) {
((SendMessageActivity) context)
.setPhotoName(Environment
.getExternalStorageDirectory()
+ photo);
} else if (context instanceof AddCommentsActivity) {
((AddCommentsActivity) context)
.setPhotoName(Environment
.getExternalStorageDirectory()
+ photo);
}else if(context instanceof PublicCommentAct){
((PublicCommentAct) context)
.setPhotoName(Environment
.getExternalStorageDirectory()
+ photo,pos);
}
Util.getPhoto(context, photo);
} else {
ToastUtil.show("最多添加9张图片~");
}
}
});
}


return view;
}


class ItemView {
public ImageView iv_pic;
public TextView tv_add;


}


@Override
public int getCount() {
return list.size();
}


@Override
public Object getItem(int position) {
return list.get(position);
}


@Override
public long getItemId(int position) {
return position;
}
public void setPos(int pos){
this.pos=pos;
}


}



public class MyGridview extends GridView {


public MyGridview(Context context, AttributeSet attrs) {
super(context, attrs);
}


public MyGridview(Context context) {
super(context);
}


public MyGridview(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}


@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}


}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值