2017-07-16 175 views
-1

我已經構建了一個測試應用程序,該應用程序在listview上顯示少量記錄。我在哪裏放置OnItemClickListener?

現在我想點擊一個項目,並查看android studio的調試信息。

我知道我應該創建一個OnItemClickListener,但我不確定我應該放置它的位置。

我試着把它放在主要活動上,應用程序工作,但點擊功能從來沒有被調用,所以有什麼問題。

我環顧了Google尋求幫助,但我無法圍住它。

它應該是一個直接的行動(我有一個列表,我點擊一個項目),但我無法使它工作。

這是我試過到目前爲止:

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 

import java.util.LinkedList; 
import java.util.List; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ListView listView = (ListView) findViewById(R.id.listViewDemo); 
     List list = new LinkedList(); 

     list.add(new Contatto("Antonio","Rossi","1234567890")); 
     list.add(new Contatto("Pino","Bianchi","2345678901")); 
     list.add(new Contatto("Peppe","Verdi","3456789012")); 
     list.add(new Contatto("Leo","Rossi","4567890123")); 
     list.add(new Contatto("Mario","Blu","56789")); 
     list.add(new Contatto("Aldo","Da Vinci","6789")); 

     CustomAdapter adapter = new CustomAdapter(this, R.layout.rowcustom,list); 
     listView.setAdapter(adapter); 
     OnItemClickListener clickListener = new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> adapter, View view, 
            int position, long id) { 
       Contatto c = (Contatto)adapter.getItem(position); 
       Log.d(c.getNome(),c.getTelefono()); 
      } 
     }; 
     listView.setOnItemClickListener(clickListener); 
    } 
} 

OnItemClickListener無法識別,並且既不的getItem。

android studio的自動更正提議我更改爲「AdapterView.OnItemClickListener」,getItem有nooptions被識別。

我試圖在類聲明中添加「implements OnItemClickListener」,但它也不起作用(提供錯誤,名稱是紅色的,android studio沒有提供解決方案)。

有一次,我能夠刪除所有的錯誤,但代碼仍然沒有工作,我不記得我做了什麼,我只是擺弄。

+2

正在搜索「click listview android」在SO上顯示多個答案,這些都沒有幫助? 如果沒有,你應該發佈你的代碼,以便人們有回顧的東西,這將有助於回答你的問題,而不會猜測多個潛在的問題。 – dominicoder

+0

@dominicoder我已經添加了代碼和進一步的說明 – Terix

回答

0

你可以把的onCreate()的OnClickListener

如果您發佈您的代碼,這當然會幫助

+0

我已經添加了代碼和進一步的說明 – Terix

0

有一對夫婦的事情,是值得懷疑你發佈的代碼。

  1. 您創建OnItemClickListener但您沒有導入AdapterView.OnItemClickListener。那麼你確定你正在使用正確的課程嗎?
  2. 在您的onItemClick中,您參考adapter,這是AdapterView<?>類型的本地參數,但AdapterView沒有此類方法getItem(int)。它不能是對您的CustomAdapter的引用,因爲它沒有被宣佈爲final
  3. 您使用Log.d(c.getNome(),c.getTelefono());是錯誤的。各種日誌方法將「標籤」作爲第一個參數。這可能是因爲你沒有看到日誌消息,因爲這只是錯誤的。

所以,真的,這不應該編譯。請檢查您的代碼併發布最新,最正確,最具可編譯的版本。包括你自定義適配器和佈局的代碼也不會傷害。

您是否嘗試過使用您的調試器來瀏覽此代碼,並查看點擊點處的斷點是否被擊中?

+0

雖然擺弄了我在某些時候編譯過但沒有工作的代碼。我試圖複製,但迄今爲止發佈的代碼是我迄今能夠回憶的內容。我將發佈所有其他類和xml以提供更好的視圖來解決這些問題 – Terix