0

: Bu durumda ListView kimliği android:id="@android:id/list" olarak XML ayarlanırNeden onitemlongclick dinleyicim çalışmıyor? MainActivity itibaren

public class MainActivity extends ListActivity implements AdapterView.OnItemLongClickListener { 
    private DataSourceSql mDataSourceSql; 
    protected ArrayList<String> mProfileNames; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mDataSourceSql = new DataSourceSql(MainActivity.this); 
     mNames = new ArrayList<String>(); 

     //this part here 
     ListView lv = (ListView) findViewById(android.R.id.list); 
     lv.setLongClickable(true); 
    } 

. Aynı etkinlikte

Ve daha sonra tarih:

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    Toast.makeText(this, mNames.get(position), Toast.LENGTH_SHORT).show(); 
} 

@Override 
public boolean onItemLongClick(AdapterView<?> l, View v, final int position, long id) { 
    Toast.makeText(this, "long clicked: " + mNames.get(position), Toast.LENGTH_LONG).show(); 
    return true; 
} 

Ama uzun basın listedeki bir öğe tetikler tek şey onListItemClick olduğunda. Mesajı uzun tıklama ile asla alamıyorum.

+0

Uzun tıklama = basın varsayalım ve (ı Listedeki bir öğeyi tutmak ve daha fazla seçenek elde edebilmek istiyorum) Sen 'lv.setOnLongClickListener (bu)' çağırmanız gerekir – user6101402

+0

tutun. –

+0

@MikeM. Cevabım yanlış mı/kötü mü? – user6101402

cevap

0

Sanırım bunu çözdüm ama bir şey eksik olursam lütfen beni düzeltin.

ben "uygular ..." şey kaldırıldı ve ardından onCreate yöntemi için aşağıdaki eklendi:

lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener 
       () { 
      @Override 
      public boolean onItemLongClick(AdapterView<?> av, View v, int 
        pos, long id) { 
       onListItemLongClick(v, pos, id); 
       return false; 
      } 
     }); 

Ben doğru veya yanlış orada dönen gerektiğinden emin değilim rağmen.

Ben de

için aşağıdaki uzun tıklama fonksiyonu aşağı değişti
public boolean onListItemLongClick(View v, final int position, long id) { 
    Toast.makeText(this, "long clicked: " + mNames.get(position), Toast.LENGTH_LONG).show(); 
    return true; 
} 

Düzenleme:

Daha hızlı yaklaşım sadece OP benim onCreate yönteme lv.setOnItemLongClickListener(this); eklemektir.

Sen Sadece eski şekilde kullanmak .. doğrudan onCreate() içinde AdapterView.OnItemLongClickListener gibi bir arayüz uygulamaması gerektiği
+0

Eğer 'Aktivite', 'OnItemLongClickListener' arayüzünü uygularsa, sadece lv.setOnItemLongClickListener (bu); –

1

(Sınıfınız bu arabirim uygulamak) ve her yöntemi geçersiz kılma ile, böyle yazmak zorunda:

0

Bunu Kullanın. Problemin çözülecek.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Toast.makeText(MainActivity.this, "Click", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
      @Override 
      public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 

       Toast.makeText(MainActivity.this, "Long Click", Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
     });