当前位置: 代码迷 >> Android >> ListView 刷新选中项混乱的有关问题
  详细解决方案

ListView 刷新选中项混乱的有关问题

热度:32   发布时间:2016-04-28 04:14:51.0
ListView 刷新选中项混乱的问题
代码如下

public class ContactInviteAdapter extends BaseAdapter 
{
    private Context mContext;
    private List<HashMap<String, Object>> contactLists;
    private LayoutInflater inflater;
    private boolean img_Flag = false;
    HashMap<Integer, Boolean> state = new HashMap<Integer, Boolean>(); //主要用来存储position对应的boolean数据
    
    public ContactInviteAdapter(Context context, List<HashMap<String, Object>> contactFriends) 
    {
     mContext = context;
     this.contactLists = contactFriends;
     inflater = LayoutInflater.from(mContext);
     initMap();
    }
    
    private void initMap() 
{
for (int i = 0; i < contactLists.size(); i++) 
{
state.put(i, false);
}

}

@Override
public int getCount() 
{
return contactLists == null?0:contactLists.size();
}

@Override
public Object getItem(int arg0) 
{
return contactLists == null?0:contactLists.get(arg0);
}

@Override
public long getItemId(int arg0) 
{
return contactLists.indexOf(contactLists.get(arg0));
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) 
{
final ViewHolder holder = new ViewHolder();
        View view = convertView;
if(view == null) 
{
view = inflater.inflate(R.layout.contact_find_all, null);
}
else 
{
view = convertView;
}
holder.imgCheck = (ImageView) view.findViewById(R.id.contact_find_all_edit_id);
holder.imgHead = (ImageView) view.findViewById(R.id.contact_img_id);
    holder.tvName = (TextView) view.findViewById(R.id.contact_name_id);
    holder.tvNumber = (TextView) view.findViewById(R.id.contact_number_id);
    holder.tvInvite = (TextView) view.findViewById(R.id.contact_inviteby_id);
holder.imgHead.setBackgroundResource((Integer) contactLists.get(position).get("contactinviteimgHead"));
holder.tvName.setText(contactLists.get(position).get("contactinvitename").toString());
holder.tvNumber.setText(contactLists.get(position).get("contactinvitenumber").toString());
holder.tvInvite.setText(contactLists.get(position).get("contactinviteBy").toString());

holder.imgCheck.setOnClickListener(new View.OnClickListener() 
{
@Override
public void onClick(View v) 
{
if(!state.get(position))
{
holder.imgCheck.setImageDrawable(mContext.getResources().getDrawable(R.drawable.invitebuttonbk33));
} else
{
;
}
img_Flag = !state.get(position);
state.put(position, img_Flag);
notifyDataSetChanged();
}

});
return view;
}

static class ViewHolder 
{
ImageView imgCheck;
ImageView imgHead;
TextView tvName;
TextView tvNumber;
TextView tvInvite;
}
}

------解决方案--------------------
没看明白你要做什么。
------解决方案--------------------
怎么混乱法?
  相关解决方案