2011-07-18 12 views
34

पर लंबे समय तक क्लिक करें मैं एक सूचीफ्रेममेंट के साथ काम कर रहा हूं और ऑनलिस्टस्टिक क्लिक कर रहा हूं। सब कुछ ठीक काम करता है, लेकिन अब मैं (जैसे setOnItemLongClickListener (नई OnItemLongClickListener() एक गतिविधि के लिए उपयोग करने के लिए एक लंबे मद क्लिक करें चाहते हैं)। मैं अपने टुकड़ा में इसका उपयोग कर सकते कैसे?ListFragment

धन्यवाद!

+3

मुझे रास्ता मिला: getListView()। SetOnItemLongClickListener (नई OnItemLongClickListener() { \t \t \t @Override \t \t \t सार्वजनिक बूलियन onItemLongClick (AdapterView paramAdapterView, \t \t \t देखें paramView, पूर्णांक स्थिति, लंबे paramLong) { // TODO वापस लौटें; } }); – tsync

उत्तर

58

हाँ, समाधान । tsync मेरे लिए काम करता द्वारा पोस्ट की मैं भी एक ही समस्या में पड़ गए और माना जाता था कि यह संभव नहीं है मैं ऊपर सुझाव की कोशिश की इस प्रकार है:।

public class ProjectsFragment extends ListFragment { 

@Override 
public void onActivityCreated(Bundle savedState) { 
    super.onActivityCreated(savedState); 

    getListView().setOnItemLongClickListener(new OnItemLongClickListener() { 

     @Override 
     public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      Toast.makeText(getActivity(), "On long click listener", Toast.LENGTH_LONG).show(); 
      return true; 
     } 
    }); 

और यह काम किया

+0

और यह भी मेरे लिए काम किया। – danny117

+1

क्या इससे कोई फर्क पड़ता है कि हम सच या गलत लौटते हैं? @ नारायणन – Manny265

+1

@ मैनी 265 वापसी झूठी ऑनक्लिक श्रोता चलाएगी, सच वापसी इस –

11

यह मैं

के लिए काम करता है! 012,
getListView().setOnItemLongClickListener(new OnItemLongClickListener() { 
    public boolean onItemLongClick(AdapterView<?> av, View v, int position, long id) { 
     //Get your item here with the position     
     return true; 
    } 
}); 
+0

को रोकती है यह बेहतर जवाब – danny117

+3

इस कोड को फ्रैगमेंट – Flexicoder

13
क्या आपको पता है कि आप संदर्भ menues के लिए दिए गए तरीकों का उपयोग कर सकते हैं पर निर्भर करता है

:

पहले रजिस्टर देखें वर्ग जो लंबे समय से (अपने टुकड़ा वर्ग के अंदर) दबाया जाता है:

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    registerForContextMenu(this.getListView()); 
} 

एक संदर्भ मेनू बनाने के लिए इन दो विधियों को लागू करने के लिए और मेनू आइटम पर क्लिक होने पर आप जो भी चाहते हैं, उसे करें:

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 

    MenuInflater inflater = this.getActivity().getMenuInflater(); 
    inflater.inflate(R.menu.my_context_menu, menu); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 

    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
    switch (item.getItemId()) { 

     case R.id.add: // <-- your custom menu item id here 
      // do something here 
      return true; 

     default: 
      return super.onContextItemSelected(item); 
    } 
} 
+4

में 'ऑनव्यूक्रेटेड' में जाने की ज़रूरत है! बस यह जोड़ना चाहते हैं कि आप setOnItemLongClickListener के साथ रजिस्टरफॉर कॉन्टेक्स्टमेनू को गठबंधन नहीं कर सकते हैं। कुछ के लिए स्पष्ट हो सकता है, लेकिन मेरे लिए नहीं। यह भी जानना अच्छा है कि पंक्ति आईडी को info.id – Toydor

+0

से पुनर्प्राप्त किया जा सकता है आज पहली बार मैंने हर उत्तर उठाया है क्योंकि यह वही था जो मैं लांगक्लिक घटना के साथ करने जा रहा था। – danny117

संबंधित मुद्दे