2013-04-08 106 views
2
getSherlockActivity().findViewById(android.R.id.list); 
new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView <? > arg0, View arg1, int position, 
     long id) { 
     // TODO Auto-generated method stub 
     Toast.makeText(getSherlockActivity(), 
      "You selected :", Toast.LENGTH_SHORT).show(); 
    } 
}; 

我想爲我的活動添加一個事件監聽器,但是根本沒有顯示吐司消息。我打電話給這段代碼onCreateView方法添加一個事件監聽器到列表視圖

回答

4

它似乎並不像你實際上是在設置列表上的點擊收聽,你只是創建它,甚至不保留參考。

請試試這個:

ListView lv = (ListView)(getSherlockActivity().findViewById(android.R.id.list)); 
lv.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView <? > arg0, View arg1, int position, 
     long id) { 
     // TODO Auto-generated method stub 
     Toast.makeText(getSherlockActivity(), 
      "You selected :", Toast.LENGTH_SHORT).show(); 
    } 
}); 
1

我沒有看到你添加任何東西。你所做的只是findViewById()沒有任何用處(因爲你沒有使用返回值,你也沒有理由創建新的OnItemClickListener,因爲你也不使用它)。不行,把兩行代碼放在一起不會使再以任何方式自動地互動......

正確的做法是:

ListView v = (ListView)getSherlockActivity().findViewById(android.R.id.list); 
v.setOnItemClickListener(new OnItemClickListener() { 
    ... 
    ... 
2
getSherlockActivity().findViewById(android.R.id.list).setOnItemClickListener(new OnItemClickListener() { 

@Override 
public void onItemClick(AdapterView <? > arg0, View arg1, int position, 
    long id) { 
    // TODO Auto-generated method stub 
    Toast.makeText(getSherlockActivity(), 
     "You selected :", Toast.LENGTH_SHORT).show(); 
}}); 

EDITED

((ListView)getSherlockActivity()).findViewById(android.R.id.list).setOnItemClickListener(new OnItemClickListener() { 

@Override 
public void onItemClick(AdapterView <? > arg0, View arg1, int position, 
    long id) { 
    // TODO Auto-generated method stub 
    Toast.makeText(getSherlockActivity(), 
     "You selected :", Toast.LENGTH_SHORT).show(); 
}}); 

加入這一行裏面的onCreate()。

+0

我不認爲這將工作,因爲findViewById()返回一個普通的'View'和'View'沒有方法'setOnItemClickListener()'它需要被轉換爲ListView,然後才能調用該方法I認爲。 – FoamyGuy 2013-04-08 13:39:11

+0

@FoamyGuy:趕上!我錯過了類型投它。上面編輯了我的答案。 – Mani 2013-04-09 05:29:15

1

只添加

ListView lv = (ListView)getSherlockActivity().findViewById(android.R.id.list); 
lv.setOnItemClickListener(this); 

@Override 
    public void onItemClick(AdapterView <? > arg0, View arg1, int position, 
     long id) { 

} 

和活動應該實現OnItemClickListener

ListView lv = (ListView)getSherlockActivity().findViewById(android.R.id.list); 
lv.setOnItemClickListener(new OnItemClickListener() { 
@Override 
    public void onItemClick(AdapterView <? > arg0, View arg1, int position, 
     long id) { 

} 
1

幾個星期前,我發現了同樣的情況。我沒有使用Sherlock,但是,它可能有助於設置下面的行。

listView.setItemsCanFocus(false); 

此外,請確保設置可點擊false爲您的行項目中的任何按鈕。