折叠后可扩展列表项发生变化

expandable list items changed after collapsing

我创建了一个可扩展列表,在每个项目中我都有一个 imageview。当用户单击 imageview 时,其资源应更改为另一个资源。例如,当 R.drawable.onalarm 是它时,在用户单击后它应该更改为 R.drawable.offalarm 。但是在团灭之后。 imageview returns 的资源恢复到之前的状态。我还更改了可扩展列表的数据,但它不起作用!这是我的列表适配器:

    private LayoutInflater inflater;
    private List<GroupItem> items;
    public void setData(List<GroupItem> items) 
    {
            this.items = items; 
    }    
    @Override
    public View getRealChildView( final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        final ChildHolder holder;
        ChildItem item = getChild(groupPosition, childPosition);
        if (convertView == null) {
            holder = new ChildHolder();
            convertView = inflater.inflate(R.layout.list_item, parent, false);
            holder.title = (TextView) convertView.findViewById(R.id.textTitle);
            holder.alarm = (ImageView) convertView.findViewById(R.id.alarm_imageview);
        } else {
            holder = (ChildHolder) convertView.getTag();
        }
        holder.title.setText(item.title);
        holder.alarm.setImageResource(item.alarmid);
        holder.alarm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ImageView iv = (ImageView) v;
                if(iv.getDrawable().getConstantState().equals
                        (getResources().getDrawable(R.drawable.onalarm).getConstantState())) {
                    iv.setImageResource(R.drawable.offalarm);
                    items.get(groupPosition).items.get(childPosition).alarmid = R.drawable.offalarm;
                    setData(items);
                }
                else {
                    iv.setImageResource(R.drawable.onalarm);
                    items.get(groupPosition).items.get(childPosition).alarmid = R.drawable.onalarm;
                    setData(items);
                }
            }
        });
        return convertView;
    }

我该怎么办? 发送

您必须为 ImageView 设置标签并检查它... true onalarm 和 false for offalarm.... 试试这个:

   boolean clicked = new Boolean(false);
  iv.setTag(clicked);
public void onClick(View v) {



if( ((Boolean)iv.getTag())==false ){
iv.setImageResource(R.drawable.onalarm);
iv.setTag(new Boolean(true));
}
else
 {
iv.setImageResource(R.drawable.offalarm);
iv.setTag(new Boolean(false));
}
}

尝试在更改图像后立即使用 notifyDatasetChanged()