在不考虑局部刷新的情况下:::::::
每次listview在适配器里填充完数据后,当改变其中一个item的数据,
并上下滑动的时候会因为listview的复用问题导致这个或者其他的item的数据又变了回来,
这个可以用个hashmap来解决
首先在适配器里添加个hashmap
private Context context;
private ArrayList<MemberPackageInfo> vp_list;
private HashMap<Integer, MemberPackageInfo> hm = new HashMap<Integer, MemberPackageInfo>();
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
// if(hm.get(position) == null){
if (convertView == null) {
holder = new ViewHolder();
convertView = View.inflate(context, R.layout.member_card_item_item, null);
holder.tv_member_card_plant_name = (TextView)
convertView.findViewById(R.id.tv_member_card_plant_name);
holder.tv_member_card_price = (TextView)
convertView.findViewById(R.id.tv_member_card_price);
holder.et_member_card_del = (EditText) convertView.findViewById(R.id.et_member_card_del);
holder.tv_member_card_residue = (TextView)
convertView.findViewById(R.id.tv_member_card_residue);
// convertView.setTag(holder);
// hm.put(position, convertView);
convertView.setTag(holder);
} else {
// convertView = hm.get(position);
holder = (ViewHolder) convertView.getTag();
}
final MemberPackageInfo info = vp_list.get(position);
hm.put(position, info);///////
holder.tv_member_card_plant_name.setText(hm.get(position).product_name);
holder.tv_member_card_price.setText(hm.get(position).price + "元");
holder.tv_member_card_residue.setText("剩余" + hm.get(position).product_num);

在不考虑局部刷新的情况下,ListView在填充数据后,如果更改某个Item的数据,滚动时由于ListView的复用机制,可能会导致数据回滚或显示错误。通过使用HashMap可以有效地解决这个问题。适配器中添加HashMap存储每个Item的状态,避免数据错乱。
854

被折叠的 条评论
为什么被折叠?



