我有一个带有 textview 和 imageview 的自定义列表视图以及类似复选标记的 imageview。在选择textView时,在listView的OnItemClickListener上,我将使ImageView Visibilty可见以显示所选择的。
stickyList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
stickyList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
String tag = (String) ((TextView) view
.findViewById(R.id.tvtag)).getText();
ImageView cb = (ImageView)
view.findViewById(R.id.ic_check);
if (cb.getVisibility() == View.VISIBLE) {
cb.setVisibility(
View.GONE);
selectedtags.remove(tag);
} else {
cb.setVisibility(
View.VISIBLE);
selectedtags.add(tag);
}
}
});
它工作正常,直到 Listview 向下滚动。如果我选择了 listview 的前两个位置 textview,当我向下滚动 listview 时,第一个两个位置的 imageview(cb) 的可见性是可见的。这意味着向下滚动后,相同位置的 imageview 变得可见。
获取视图方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.recenttag_list_item,
parent, false);
holder.text = (TextView) convertView.findViewById(R.id.tvtag);
holder.checkmark = (ImageView) convertView
.findViewById(R.id.ic_check);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(data.get(position).mytag);
return convertView;
}