2013-05-13 16 views
1

在我的ListView中我有這兩個方法,它們可以工作,但是直到其中一個列表項被按下一次。所以,當我第一次按下/按住一個項目時沒有任何反應,但是當我按下/按住一個項目時它完美地工作。onItemClick和onItemLongClick不在ListView中觸發,直到一個項目被按下一次

這裏是我的onListItemClick方法

@Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 

    getListView().setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) { 
      File file = new File(path.get(position)); 
      longClick(file); 
      Log.d(TAG, "onItemLongClick"); 
      return true; 
     } 
    }); 

    getListView().setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position ,long id) { 
      File file = new File(path.get(position)); 
      player(file); 
      Log.d(TAG, "onItemClick"); 
     }; 
    }); 
} 

回答

1

要設置setOnItemLongClickListenersetOnItemClickListeneronListItemClick裏面,所以他們不會觸發,直到你按下列表項的第一次。

你需要做的是在onListItemClick以外的代碼。

getListView().setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) { 
      File file = new File(path.get(position)); 
      longClick(file); 
      Log.d(TAG, "onItemLongClick"); 
      return true; 
     } 
    }); 

    getListView().setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position ,long id) { 
      File file = new File(path.get(position)); 
      player(file); 
      Log.d(TAG, "onItemClick"); 
     }; 
    }); 
+0

我收到一些錯誤,當我直接複製到我的ListActivity。對不起,我對java/android很新。這段代碼是否需要在一個方法中?或者我需要稍微改變它,因爲我使用的是ListActivity? – Moez 2013-05-13 13:25:28

+0

代碼需要在'setContentView(...)之後的'onCreate()'內;' – 2013-05-13 13:27:39

+0

太棒了!非常感謝你 – Moez 2013-05-13 18:06:10

相關問題