2011-01-07 13 views
28

używam zarówno onClickListener i onLongClickListener dla TextView w ListView. Widzę, że w Androidzie 1.6 długi detektor kliknięć jest uruchamiany razem z detektorem on click, co oznacza, że ​​oba są uruchamiane, gdy długo klikam. Ale tak nie jest w przyszłych wersjach. Czy jest jakaś poprawka?stosowania zarówno onClickListener i onLongClickListener w ListView Android 1.6

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    if (convertView == null) { 
    LayoutInflater inflater = getLayoutInflater(); 
    row = inflater.inflate(R.layout.row, parent, false); 
    } 

    TextView tv = (TextView) row.findViewById(R.id.tv); 

    tv.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
     showMessage(); 
     } 
    }); 

    tv.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
     showLongMessage(); 
     } 
    }); 
} 
+0

Co "fix"? Fakt, że wystrzelił zarówno w wersji 1.6, jest z pewnością błędem. – Falmarri

+0

Przez naprawę mam na myśli, czy istnieje sposób, aby zapobiec temu problemowi. – dcanh121

+0

Czy są one nazywane konsekwentnie w tej samej kolejności? Który? –

Odpowiedz

91

Czy wrócisz logiczna true na koniec OnLongClickListener aby wskazać, że nie chce dalszego przetwarzania?

+0

Wow nie może być łatwiejszym i czystszym rozwiązaniem :) dzięki! – Jonas

12

Myślę, że powinieneś użyć OnItemLongClickListener() zamiast OnLongClickListener().

Zobacz developers website do dalszej reakcji

6
TextView t1 = (TextView) findViewById(R.id.textView1); 
t1.isClickable(); 

t1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Toast.makeText(getBaseContext(), "Clicked", Toast.LENGTH_SHORT).show(); 
    } 
}); 

t1.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     // TODO Auto-generated method stub 
     Toast.makeText(getBaseContext(), "Long Clicked", Toast.LENGTH_SHORT).show(); 
     return true; 
    } 
}); 
1
itemToClick.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v)  { 
     //do your logic on click 
    }); 
itemToClick.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     // do your logic for long click and remember to return it 
     return true; }});