嵌套匿名类事件处理程序中的范围变量

时间:2016-12-16 20:26:43

标签: java android

对不起我的英文,我使用谷歌翻译。 有ListView。有一个事件处理程序AdapterView.OnItemClickListener()。在里面它改变了ListItem的布局和onClick imageviev上指定的处理程序。以下代码传递了这一点。

getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(final AdapterView<?> parent, View view, final int position, long id) {

        ... Here we change the layout

        /**
        * Bind the event handlers for new control
        */
        // Get UI-control 
        ImageView photoCapture = (ImageView) newInnerView.findViewById(R.id.listview_element_report_row_imageview);
        // set handler
        photoCapture.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                mCurrentItemPosition = position; ///??????????

                ...doing something useful

             }
         });
     }
 });

这样的事件序列 - 我们点击元素并改变其布局(可扩展)。对于其中一个子元素,我们绑定处理程序。外部处理程序有一个形式参数 位置 ,值我使用内部处理程序(但稍后),因为这两个事件在时间上分开。我可以扩展第一个ListItem,然后展开第二个,第三个,...然后返回第一个并单击ImageView并导致内部事件处理程序。问题 - 在 View.OnClickListener() 中,哪个值会有变量 位置 ?我看 - 位置 总是有“正确”的价值,为什么?

0 个答案:

没有答案