2012-04-18 101 views
2

我的OnItemClickListener问题。 它可能是有用的注意,我写的Android开发者网站提供此以下准则: http://developer.android.com/resources/tutorials/views/hello-listview.htmlAndroid代码不被接受 - OnItemClickListener() - “...必须实现继承..”

当设置监听器:

lv.setOnItemClickListener(new OnItemClickListener() { 

我已经为新出以下错误“ OnItemClickListener”

“之类的新AdapterView.OnItemClickListener(){}必须实现继承的抽象方法AdapterView.OnItemClickListener.onItemClick(适配器视图,视图的int,long)”

伊夫试图表明什么蚀和补充显然未实现方法,但它只是产生几乎是相同的距实际细节中的参数,例如在那里我

"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> 

此外,如果任何人有一个备用的第二给advice..I在Toast中出现“(TextView)view.getText()”错误,该错误表明我无法从View转换为TextView。已经快速查看它没有运气,但我目前正试图解决第一个和更重要的问题!

由于提前,

乔希

回答

4

首先,这是我的代码修改和它的工作。

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(); 
    } 

}); 

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

我的建议是,你最好为你的活动课选择另一个名字。我通常使用活动的功能加上一个“活动”后缀作为活动类的名称,例如,如果你想显示一个用户列表,你可以选择UserListActivity,在这里我选择“ListActivity”作为后缀来表示这个该活动实际上来自ListActivity。

+1

+1,但要小心... ListActivity也是一个Android框架类... – 2012-04-18 01:02:30

+0

非常感谢您的帮助。我甚至没有考虑过,尽管我已经尝试了一些与“视图视图”有关的混乱。有时它只需要另一双眼睛......并且可能还有更多的知识和经验。再次欢呼。 – 2012-04-18 01:02:42

+0

@ChrisThompson,谢谢你,先生!而且应该不会将纯粹的“ListActivity”用作活动名称。 – 2012-04-18 01:05:50

0

你可以尝试添加:

@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(); 
} 

}); 
+0

只是attemped,扔了一个新的错误onItemClick指出: “的方法onItemClick(适配器视图,景观,INT,长)的类型new AdapterView.OnItemClickListener(){}必须重写超类方法“ 干杯。 – 2012-04-18 00:49:30

0

查看已经存在,尝试重命名为别的一类....

相关问题