2012-04-18 34 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

查看已經存在,嘗試重命名爲別的一類....

相關問題