2011-07-18 36 views
34

Uzun tıklatma ListFragment ile çalışıyorum ve bir onListItemClick yapıyor. . Nasıl parçadaki bu kullanabilirim?ListeYazı İzleme

teşekkürler!

+3

Yolu buldum: getListView(). SetOnItemLongClickListener (yeni OnItemLongClickListener() { \t \t \t @Override \t \t \t kamu boolean onItemLongClick (AdapterView paramAdapterView, \t \t \t Görünüm paramView, int pozisyonu, uzun paramLong) { // TODO doğru döndürür; } }); – tsync

cevap

58

Evet, çözümü) Her şey çalışıyor, ama şimdi bir Aktivitesi için (örneğin setOnItemLongClickListener (yeni OnItemLongClickListener() uzun Öğe tıklayın kullanmak istiyorum . Benim için çalışan tsync tarafından gönderildi Ben de bu mümkün olmadığını aynı sorunla karşılaştık ve kabul etmişti şöyle yukarıdaki öneri denedik.

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; 
     } 
    }); 

ve

+0

ve benim için de çalıştı. – danny117

+1

Gerçek mi yoksa yanlış mı dönersek sorun olur mu? @Narayanan – Manny265

+1

@ Manny265 return false onclick dinleyiciyi çalıştırır, true döndürürse bu –

11

çalıştı Bu benim

için çalışıyor!Eğer bağlam menüleri için verilen yöntemleri kullanabilirsiniz gerçekleştirmek istediğinize bağlı
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

bunu daha iyi yanıtlar – danny117

+3

Bu kodun, Fragman – Flexicoder

13

:

İlk uzun (sizin Fragment sınıfının içinde) preslenmiş alır Görünüm sınıfı kaydetmek:

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

    registerForContextMenu(this.getListView()); 
} 

Bu iki yöntemi uygulamak yerine, bir bağlam menüsü oluşturmak ve bir menü öğesine tıklandığında ne yapmak istediğinizi yapın:

@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

'daki "onViewCreated" bölümüne girmesi gerekir! Sadece setOnItemLongClickListener ile registerForContextMenu birleştiremezsiniz eklemek istiyorum. Bazıları için açık olabilir, ama benim için değil. Ayrıca, satır kimliğinin info.id – Toydor

+0

'dan alınabileceğini bilmek de güzeldi. İlk kez her yanıtı çektim çünkü bu, longclick olayıyla ne yapacağımdı. – danny117