Java 向ListAdapter中的选定项添加勾号

Java 向ListAdapter中的选定项添加勾号,java,android,Java,Android,我在ListAdapter中有名称列表,我显示图标和图标的名称 @Override public View getView(int position, View convertView, ViewGroup parent) { View view; if (convertView == null) { view = mInflater.inflate(R.layout.list_item_icon_text, parent, false); } else

我在ListAdapter中有名称列表,我显示图标和图标的名称

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view;

    if (convertView == null) {
        view = mInflater.inflate(R.layout.list_item_icon_text, parent, false);
    } else {
        view = convertView;
    }

    AppModel item = getItem(position);

        ImageView myicon = (ImageView) view.findViewById(R.id.iconList);
        myicon.setImageDrawable(item.getIcon()); 
              ((TextView)view.findViewById(R.id.textList)).setText(item.getLabel());

    }

    return view;
}

现在,我想单击名称并查看右侧的勾号,以表明它已被选中,再次选中时,勾号应不可见。到目前为止,我尝试将勾号图标设置为ImageView失败,因为有时我单击A时,H也会有勾号。

由于
convertView
,您所说的问题是正常的。要解决此问题,您可以这样做:

  • boolean selected
    属性添加到
    AppModel

    public class AppModel {
    
    
    //....
    //your own attributes
    
    
    private boolean selected;
    
    public boolean isSelected() {
        return selected;
    }
    
    public void setSelected(boolean selected) {
        this.selected = selected;
    }
    
    }

  • 勾选ImageView
    添加到布局中。充气项目视图时使用
    布尔值
    选择
    以控制是否显示勾号

     AppModel item = getItem(position);
     ImageView tick = (ImageView) view.findViewById(R.id.tick);
     tick.setVisibility(item.isSelected()?View.VISIBLE:View.GONE);
    
  • OnClickListener
    添加到视图中:

     view.setOnClickListener(new View.OnClickListener() {
    
        @Override
        public void onClick(View view) {
            item.setSelected(!item.isSelected());
            notifyDataSetChanged();
        }
    });