2011-06-01 12 views

उत्तर

26

यह जानना मुश्किल है कि आपको क्या हासिल करने की आवश्यकता है। लेकिन मेरा अनुमान है कि आप उस वस्तु पर कुछ एसीयन करना चाहते हैं जो लंबे क्लिक को प्राप्त करता है। इसके लिए, आपके पास दो विकल्प हैं:

listView.setOnItemLongClickListener (new OnItemLongClickListener() { 
    public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { 
    //do your stuff here 
    } 
}); 
+0

क्या आप कृपया मेरी सूची दृश्य में OnItemLongClickListener को असाइन करने का तरीका बता सकते हैं? पहले ही, आपका बहुत धन्यवाद। –

+0

@LA_ ऊपर देखें। – Aleadam

+0

धन्यवाद, यह पूरी तरह से काम करता है। मैं लंबे समय से क्लिक किए गए आइटम से जुड़े विशेष डेटाबेस मान कैसे प्राप्त कर सकता हूं? 'This.getListAdapter() जैसे कुछ होना चाहिए। GetItem (position)'? –

0

अपने विचारों के लिए एक कस्टम View.OnLongClickListener जोड़ें। यह कई मामलों से साझा किया जा सकता है, तो आप

onLongClick(View v) 

के पैरामीटर का उपयोग पता है कौन सा दृश्य क्लिक किया गया है और तदनुसार प्रतिक्रिया कर सकते हैं।

सादर, स्टीफन

+0

चाहेंगे इस गंदगी ListView की सामान्य स्क्रॉल/फ़्लिंग कार्यक्षमता में देखें बनाने आप एक कस्टम एडाप्टर बना रहे हैं, एक View.OnLongClickListener जोड़ सकता हूँ? –

+0

अजीब, लेकिन यह भी काम नहीं करता है। मैं करता हूं: 'पब्लिक क्लास ब्रिज क्लासएक्टिविटी लिस्ट एक्टिविटी बढ़ाती है {... ऑनलॉन्गक्लिक लिस्टनर लांगक्लिक लिस्टनर; ... longClickListener = new OnLongClickListener() { \t सार्वजनिक बूलियन ऑन लोंगक्लिक (देखें v) { \t \t Log.i ("", Integer.toString (v.getId())); \t \t वापस लौटें; \t} }; ' –

+0

@LA_ आप onDown सच लौटने की आवश्यकता हो सकती है। –

14

आम तौर पर, आप दूसरे के साथ एक अधिक संगत उपयोगकर्ता इंटरफ़ेस अनुभव देने के लिए एक संदर्भ मेनू, जो आप 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

में आयोजित किया जाता है तो आप लंबे समय तक क्लिक करें घटना पर कब्जा करना चाहते हैं मैं सोचो कि स्निकोलस क्या सुझाव दे रहा है।

+0

यह काम नहीं करता है। ऐसा लगता है क्योंकि मेरे पास संदर्भ मेनू नहीं है - ऑन कॉन्टेक्स्ट इटैम चयन कभी नहीं कहा जाता है। –

+0

मैंने कोड उदाहरण अपडेट किया है। क्या आपने 'रजिस्टरफॉर कॉन्टेक्स्टमेनू (सूची दृश्य)' को कॉल किया था? जैसा कि अन्य ने कहा है, क्या आप आइटम को लंबे समय तक क्लिक करते समय कुछ हासिल करने की कोशिश कर रहे हैं या आप अपनी सूची दृश्य पर आइटम के लिए संदर्भ मेनू प्राप्त करने का प्रयास कर रहे हैं? –

+0

जब मैं लंबे समय तक क्लिक करता हूं, तो मैं एक और गतिविधि शुरू करने की कोशिश कर रहा हूं। तो, संदर्भ मेनू दिखाने की कोई ज़रूरत नहीं है। 'रजिस्टरफॉर कॉन्टेक्स्टमेनू (सूची दृश्य)' वहां है। –

0
//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; 
      } 
     }); 
संबंधित मुद्दे