मैं इस तरह की घटना को कैसे पकड़ सकता हूं? onCreateContextMenu
काफी समान है, लेकिन मुझे मेनू की आवश्यकता नहीं है।ListView आइटम पर लंबी टैप कैसे संभालें?
उत्तर
यह जानना मुश्किल है कि आपको क्या हासिल करने की आवश्यकता है। लेकिन मेरा अनुमान है कि आप उस वस्तु पर कुछ एसीयन करना चाहते हैं जो लंबे क्लिक को प्राप्त करता है। इसके लिए, आपके पास दो विकल्प हैं:
- AdapterView.OnItemLongClickListener जोड़ें। setOnItemLongClickListener देखें।
।
listView.setOnItemLongClickListener (new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView parent, View view, int position, long id) {
//do your stuff here
}
});
- जब विधि Adapter#getView(...)
अपने विचारों के लिए एक कस्टम View.OnLongClickListener जोड़ें। यह कई मामलों से साझा किया जा सकता है, तो आप
onLongClick(View v)
के पैरामीटर का उपयोग पता है कौन सा दृश्य क्लिक किया गया है और तदनुसार प्रतिक्रिया कर सकते हैं।
सादर, स्टीफन
चाहेंगे इस गंदगी ListView की सामान्य स्क्रॉल/फ़्लिंग कार्यक्षमता में देखें बनाने आप एक कस्टम एडाप्टर बना रहे हैं, एक View.OnLongClickListener जोड़ सकता हूँ? –
अजीब, लेकिन यह भी काम नहीं करता है। मैं करता हूं: 'पब्लिक क्लास ब्रिज क्लासएक्टिविटी लिस्ट एक्टिविटी बढ़ाती है {... ऑनलॉन्गक्लिक लिस्टनर लांगक्लिक लिस्टनर; ... longClickListener = new OnLongClickListener() { \t सार्वजनिक बूलियन ऑन लोंगक्लिक (देखें v) { \t \t Log.i ("", Integer.toString (v.getId())); \t \t वापस लौटें; \t} }; ' –
@LA_ आप onDown सच लौटने की आवश्यकता हो सकती है। –
आम तौर पर, आप दूसरे के साथ एक अधिक संगत उपयोगकर्ता इंटरफ़ेस अनुभव देने के लिए एक संदर्भ मेनू, जो आप Activity.registerForContextMenu(View view)
साथ ListView पंजीकरण से कर सकते हैं के साथ एक सूची दृश्य पर एक लंबे क्लिक सहयोगी चाहते हैं एंड्रॉयड ऍप्स।
और उसके बाद इस तरह अपने अनुप्रयोग में onContextItemSelected विधि ओवरराइड:
@Override
public void onCreate(Bundle savedInstanceState) {
listView = (ListView) findViewById(R.id.your_list_view);
registerForContextMenu(listView);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle(getString(R.string.menu_context_title));
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.your_context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.some_item:
// do something useful
return true;
default:
return super.onContextItemSelected(item);
}
सूची में स्थिति भी info.id
में आयोजित किया जाता है तो आप लंबे समय तक क्लिक करें घटना पर कब्जा करना चाहते हैं मैं सोचो कि स्निकोलस क्या सुझाव दे रहा है।
यह काम नहीं करता है। ऐसा लगता है क्योंकि मेरे पास संदर्भ मेनू नहीं है - ऑन कॉन्टेक्स्ट इटैम चयन कभी नहीं कहा जाता है। –
मैंने कोड उदाहरण अपडेट किया है। क्या आपने 'रजिस्टरफॉर कॉन्टेक्स्टमेनू (सूची दृश्य)' को कॉल किया था? जैसा कि अन्य ने कहा है, क्या आप आइटम को लंबे समय तक क्लिक करते समय कुछ हासिल करने की कोशिश कर रहे हैं या आप अपनी सूची दृश्य पर आइटम के लिए संदर्भ मेनू प्राप्त करने का प्रयास कर रहे हैं? –
जब मैं लंबे समय तक क्लिक करता हूं, तो मैं एक और गतिविधि शुरू करने की कोशिश कर रहा हूं। तो, संदर्भ मेनू दिखाने की कोई ज़रूरत नहीं है। 'रजिस्टरफॉर कॉन्टेक्स्टमेनू (सूची दृश्य)' वहां है। –
//Deleted individual cart items
//on list view cell long press
cartItemList.setOnItemLongClickListener (new OnItemLongClickListener() {
@SuppressWarnings("rawtypes")
public boolean onItemLongClick(AdapterView parent, View view, final int position, long id) {
final CharSequence[] items = { "Delete" };
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Action:");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
cart = cartList.get(position);
db.removeProductFromCart(context, cart);
new AlertDialog.Builder(context)
.setTitle(getString(R.string.success))
.setMessage(getString(R.string.item_removed))
.setPositiveButton("Done", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(CartDetailsActivity.this, HomeScreen.class);
startActivity(intent);
}
})
.show();
}
});
AlertDialog alert = builder.create();
alert.show();
//do your stuff here
return false;
}
});
- 1. एंड्रॉइड: एकल टैप और लंबी प्रेस/डबल टैप के लिए दो अलग-अलग ईवेंट?
- 2. एंड्रॉयड ListView: दिखाई आइटम
- 3. रनटाइम पर ListView आइटम में गतिशील दृश्य कैसे जोड़ें?
- 4. ListView आइटम का दृश्य कैसे प्राप्त करें?
- 5. एंड्रॉइड: ListView आइटम को कैसे छिपाना है
- 6. ListView आइटम जोड़ा गया ईवेंट
- 7. ContextMenu टैप करने के बजाय टैप पर
- 8. ListView
- 9. ListView आइटम में चेकबॉक्स जोड़ना इसे आइटमक्लिक
- 10. WinForms ListView नियंत्रण पर मल्टी-लाइन सूची आइटम?
- 11. कस्टम सूची आइटम ListView के लिए एंड्रॉयड
- 12. ListView
- 13. ListView एक आइटम को एनिमेट करें
- 14. टैप
- 15. ListView
- 16. WPF ListView हमेशा पूर्ण आइटम दिखाएं
- 17. क्या एक लंबी प्रेस और बटन पर टैप के बीच अंतर करना संभव है?
- 18. ListView
- 19. टैप
- 20. कैसे मेरे ListView
- 21. टैप
- 22. टैप
- 23. ListView में चयनित आइटम को हाइलाइट कैसे करें?
- 24. एंड्रॉइड/जावा सूचीदृश्य आइटम टैप होने पर मैं क्लिक ध्वनि को कैसे अक्षम कर सकता हूं?
- 25. चयनित आइटम को ListView से कैसे प्राप्त करें?
- 26. ListView आइटम के लिए हाइलाइट रंग कैसे सेट करें?
- 27. WPF ListView - मैं चयनित आइटम पृष्ठभूमि रंग कैसे सेट करूं?
- 28. मोबाइल सफारी पर डबल टैप
- 29. ListView
- 30. ListView
क्या आप कृपया मेरी सूची दृश्य में OnItemLongClickListener को असाइन करने का तरीका बता सकते हैं? पहले ही, आपका बहुत धन्यवाद। –
@LA_ ऊपर देखें। – Aleadam
धन्यवाद, यह पूरी तरह से काम करता है। मैं लंबे समय से क्लिक किए गए आइटम से जुड़े विशेष डेटाबेस मान कैसे प्राप्त कर सकता हूं? 'This.getListAdapter() जैसे कुछ होना चाहिए। GetItem (position)'? –