Android listview - listener必须覆盖超类方法

时间:2012-08-22 07:59:33

标签: android listview

这是代码,我有问题:

        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, android.view.View view,
                int position, long id) {

            if(listview.isItemChecked(position)){

            } 

            if(listview.getCheckedItemCount()>1){

            }

        }
    });

它一直说监听器必须覆盖超类方法,并且我不能在内部类中调用非final变量“listview”。我该如何调用listview.isItemChecked(position)呢?感谢

1 个答案:

答案 0 :(得分:3)

我建议您阅读Java中final的使用。从技术上讲,您可以通过在final之前添加关键字ListView listview = ...来解决此问题,因此final ListView listview = ...

但是,更好的选择是在OnItemClick方法中使用传递给ListView的引用。参数AdapterView<?> Parent对应于ListView,因此您可以使用以下代码:

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, android.view.View view,
            int position, long id) {

        ListView lv = (ListView) parent;

        if(lv.isItemChecked(position)){
            // ...
        } 

        if(lv.getCheckedItemCount()>1){
            // ...
        }

    }
});