2011-09-14 14 views
6

我有一個ListFragment活動。如何覆蓋ListFragment中的LongPress?

我想爲onItemClickedLongPress創建一個方法,以便當用戶這樣做時。彈出一個菜單。我熟悉創建菜單。

因此,如果有人願意,給我進一步的說明如何設置在ListFragment活動覆蓋longpress?

回答

8

編輯:此示例顯示如何顯示其他系統菜單fx以外的其他東西。 QuickAction從https://github.com/lorensiuswlt/NewQuickAction

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    //....... 
    registerForContextMenu(getListView()); 
} 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    AdapterView.AdapterContextMenuInfo amenuInfo = (AdapterView.AdapterContextMenuInfo) menuInfo; 
    Object item = getListAdapter().getItem(amenuInfo.position); 
    //item could be Cursor/String/YourObject it depends on Adapter 
    //show popup fx. QuickAction from https://github.com/lorensiuswlt/NewQuickAction 
    QuickAction qa = new QuickAction(getActivity()); 
    qa.setAnimStyle(QuickAction.ANIM_AUTO); 
    qa.show(amenuInfo.targetView); 
} 

編輯: 這ansewer不好 ...爲什麼我這樣做這樣奇怪的方法?因爲Eclipse的智能感知沒有爲ListView propmt「好」 setOnLongClickListener(因爲ListView具有至少2種setOnLongClickListener方法......一個從View和第二從AdapterView類)......最簡單的方法就是讓你的ListFragment實施AdapterView.OnItemLongClickListener然後在onViewCreated加代碼getListView().setOnLongClickListener(this);

+0

menuInfo爲空?現在做什麼 ? – aProgrammer

5

通過「長按」,我認爲你指的是上下文菜單。對於ListFragment,你應該做的是爲上下文菜單註冊:

@Override 
public void onActivityCreated(Bundle icicle) {  
    registerForContextMenu(getListView()); 
} 

一旦你這樣做,ListFragment應該調用onCreateContextMenu()onContextItemSelected()當它檢測到長按。

0

修改埃裏希·道格拉斯的回答進一步..由於某種原因,我自己的應用程序會崩潰,直到我修改了代碼,並放置在註冊成onViewCreated如下:

@Override 
public void onViewCreated (View view, Bundle savedInstanceState) { 
    registerForContextMenu(getListView()); 
} 
0
getListView().setOnItemLongClickListener(new OnItemLongClickListener() { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
     // Show your popout menu here. 
    } 
});