这是代码,我有问题:
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/