java - Android 代码不被接受 - OnItemClickListener() - "...must implement the inherited.."

标签 java android listview click onitemclicklistener

我的 OnItemClickListener 有问题。 值得注意的是,我是按照 Android 开发者网站提供的指南编写此内容的: http://developer.android.com/resources/tutorials/views/hello-listview.html

设置监听器时:

lv.setOnItemClickListener(new OnItemClickListener() {

新的“OnItemClickListener”显示以下错误

"The type new AdapterView.OnItemClickListener(){} must implement the inherited abstract method AdapterView.OnItemClickListener.onItemClick(AdapterView, View, int, long)"

我尝试了 eclipse 的建议并添加了明显未实现的方法,但它只是生成了一个几乎相同的方法,除了参数中的实际细节之外,例如我有

"int position"

自动生成的代码有

"int arg2"

通过使用此方法,它使我的方法变得多余,因为它不会被调用(我认为......)

我尝试更改代码的各个部分,例如参数的内容等,但没有成功。 所以我基本上正在寻找一些帮助来解决这个问题,任何建议/方向将不胜感激。 我的完整代码如下所示:

import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class View extends ListActivity{
static final String[] entriesArray = new String[]{
    "One", "Two", "Three", "GO"};


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setListAdapter(new ArrayAdapter<String>(this, R.layout.dbrowviewer, entriesArray));

    ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //When clicked show toast
            Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
            Toast.LENGTH_SHORT).show();
        }

    });

}
}

布局以防万一..(R.layout.dbrowviewer)

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:textSize="16sp" >
</TextView>

此外,如果有人有空闲时间提供建议..我在 toast 中遇到“(TextView) view.getText()”错误,指出我无法从 View 转换为 TextView。快速浏览了一下,但没有运气,但我目前正在尝试解决第一个也是更重要的问题!

提前致谢,

乔什

最佳答案

首先,这是我修改过的代码并且它有效。

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parnet, android.view.View view,
            int position, long id) {
        Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
                Toast.LENGTH_SHORT).show();
    }

});

这里的问题是你的“类”名称,你选择了“View”作为你的类名称,它恰好与 android.view.View 相同,所以如果你使用 View 作为第二个参数的类型你的监听器,编译器会感到困惑。

我的建议是,你最好为你的 Activity 类别选择另一个名称。我一般都是在activity的功能上加一个“Activity”后缀作为activity类名,比如如果要显示用户列表,可以选择UserListActivity,这里我选择“ListActivity”作为后缀来表示该 Activity 实际上源自ListActivity。

关于java - Android 代码不被接受 - OnItemClickListener() - "...must implement the inherited..",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10201201/

相关文章:

java - 为什么在子类中可以访问没有完全限定名称的静态方法?

android - 使用导航组件将参数安全地传递给嵌套图

java - Android:使用 drawable 与 drawable-nodpi 文件夹时内存消耗存在巨大差异

android - 用按钮处理 ListView

java - Android 中的国家/地区代码选择器无法获取国家/地区代码

android - 重绘后 ListView 消失

java - RegEx匹配没有特定属性的<a> html标签

java - 在eclipse中将Servlet连接到MySQL数据库

java - Elasticsearch NoNodeAvailableException 配置的节点均不可用

android - Android 上的 'Context' 是什么?