当前位置: 代码迷 >> Android >> listview 长按事件 改变item里面的Imageview的图片解决方案
  详细解决方案

listview 长按事件 改变item里面的Imageview的图片解决方案

热度:89   发布时间:2016-04-28 05:00:41.0
listview 长按事件 改变item里面的Imageview的图片

  mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {

                registerForContextMenu(mListView);
                return false;

            }
        });

        return contextView;
    }

    @Override
    public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
        contextMenu.setHeaderTitle("运动治疗");
        contextMenu.add(0, 0, 0, "完成");
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
        int id=info.position;


        switch (item.getItemId()) {
            case 0:
              // UpdateList(id);
              View view=  info.targetView.findViewById(R.id.status);
                //imageView=(ImageView)contextView.findViewById(R.id.status);
             view.setBackgroundResource(R.drawable.wancheng);

                break;
        }
        return super.onContextItemSelected(item);
    }


为什么我长按改变的不是我选中的item 
------解决方案--------------------

引用:
Quote: 引用:

问题在于 注册点击时候 未指定 行数, 

点击监听执行时候 listView 会调用默认的位置(不确定) 

所以基本上不会得到你想要的结果。

我的是长按事件 大神求详解


我前面的回答是有错的,你的做法没有问题。(没有实例调试,抱歉)
实际问题在于 你改变了某一项上的ImageView 的值, 
然而ListView 是个item 不断重用的控件,你改了item 1 ,往下滚,item5出现,item1 消失,
 这时item5是重用item1的控件, 此时图片是你改过的
你必须额外保存imageView的图片状态,并在getView中重新绑定。
  相关解决方案