Android listview - 监听器必须覆盖父类(super class)方法

标签 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){

            }

        }
    });

它一直说监听器必须重写父类(super class)方法并且我不能在内部类中调用非最终变量“listview”。那我该如何调用 listview.isItemChecked(position) 呢?谢谢

最佳答案

我建议您阅读有关 final 的用法的信息在 java 。从技术上讲,您可以通过添加关键字 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){
            // ...
        }

    }
});

关于Android listview - 监听器必须覆盖父类(super class)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12068697/

相关文章:

android - 在 fragment TabHost 中刷新 ListView

android - 如何选中和取消选中 CheckBox?

JavaFx ListView<Float> 设置所有元素的字体颜色

java - 我不明白如何使用带有选项卡的操作栏 sherlock

java - 安卓 GCM : different way of handling push depending on whether the app is visible or not

android - 将 androidx.fragment.app.Fragment 转换为 android.app.fragment.Fragment?

flutter - 为什么 “.where”方法不能通过我的List对象过滤?

java - 如何获取发送短信的价格

android - 如何在android ListView 中使用notifyDataSetAdapter?

java - ArrayAdapter - 如何停止 getView 调用?