不接受安卓代码 - OnItemClickListener() - "...must implement the inherited.."



我的OnItemClickListener有问题。请注意,我是根据 android 开发人员网站提供的指南编写此内容的,这可能会很有用:http://developer.android.com/resources/tutorials/views/hello-listview.html

设置侦听器时:

lv.setOnItemClickListener(new OnItemClickListener() {

我为新的"OnItemClickListener"显示以下错误

"新类型AdapterView.OnItemClickListener()

{}必须实现继承的抽象方法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>

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

提前感谢,

乔希

首先,这是我修改的代码,它起作用了。

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"后缀作为活动类名,例如,如果要显示用户列表,可以选择UserListActivity,这里我选择"ListActivity"作为后缀来表示活动实际上派生自ListActivity。

你能尝试添加:

@Override

以上 onItemClick():

lv.setOnItemClickListener(new OnItemClickListener() {
@Override
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();
}
});

View 已经是一个存在的类,请尝试将其重命名为其他名称....

相关内容

最新更新