2011-03-26 127 views
0

我一直在努力尋找正確的方式來實現一個ListView的動作偵聽器。我真正想要完成的是創建一個ListView,並且每當用戶點擊任何項目時,先前的活動都將被切換。我真的很新,所以請幫助我,我會非常感激。如果你能告訴我我的代碼錯了,那就太棒了!如何在listView上實現動作監聽器?

我使用Fedor的代碼[來自這裏] [1]。

 ///Here I tried to Implement an action listener but It doesn't work. 

     list.setOnItemClickListener(new OnItemClickListener() {                                        
      public void onItemClick(AdapterView<?> arg0, View arg1, int position,long id)        
      {                                           
       if(list.getItemAtPosition(position).equals(mStrings[1]))              
       {                           
        Intent i = new Intent(MainActivity.this, Activity2.class);                       
        startActivity(i);                     
        }                          
       }                          
      }); 


     } 
+0

什麼完全不起作用? onItemClick從未被調用? if語句失敗? – MByD 2011-03-26 13:59:27

+0

整個應用程序工作正常,但是,只要我點擊任何按鈕它什麼都不做。我其實想把用戶從MainActiviy帶到另一個Activity。如果您沒有注意到,我在我的MainActiviy.class中使用了.setOnItemClickListener,但未能完成任務?感謝您的重新調整,我希望您有個好主意來幫助我。 – 2011-03-26 14:06:21

+0

讓我來重述它。當你點擊列表中的一個項目時,應用程序是否開始執行'onItemClick',但if語句if(list.getItemAtPosition(position).equals(mStrings [1]))'返回false並且什麼也沒有發生,或者應用程序根本就執行'onItemClick'? – MByD 2011-03-26 14:12:42

回答

0

在這種情況下,您需要重寫onListItemClick。參考 Click Listener on ListView 獲得更多幫助,解決方案是一個相當不錯的實現。

這是一個可能的實現,應該在您的主要活動中進行。請記住,只有在保持MainActivity擴展活動時,這纔會起作用。

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    // Intent launcher here 
} 

如果您希望以後擴展ListActivity而不是活動,你需要調用onListItemClick,做下面這個方案

公共類YourClass擴展ListActivity實現OnItemClickListener {

@Override 
public void onCreate(Bundle icicle){ 
    super.onCreate(icicle); 
    setContentView(R.layout.your_layout); 

    getListView().setOnItemClickListener(this); 
} 

@Override 
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    // your stuff here 
} 
} 
+0

我應該在哪裏重寫onListItemClick?在我的字符串可以找到或LazyAdapterClass的MainActivity?在此先感謝eLobato! – 2011-03-26 15:31:26

+0

在MainActivity中重寫它。我不確定您是否可以在LazyAdapter類中重寫它。 – eLobato 2011-03-26 15:37:25

+0

感謝您的提示,但可以告訴我如何根據我的代碼使用此onListItemClick。我只知道如何使用onItemClick,但沒有工作。 – 2011-03-26 16:00:16