Câu hỏi của bạn rất giống với this one, nhưng có vẻ như đây không phải là bản sao chính xác.
Điều bạn đã nhận thấy là lớp ListActivity không có ghi đè phương pháp cụ thể cho trường hợp này.
Để thêm chức năng này như một override phương pháp, lớp học của bạn nên thực hiện các giao diện AdapterView.OnItemLongClickListener
, và sau đó bạn có thể thêm các ghi đè onItemLongClick()
phương pháp, có tác dụng giống như ghi đè onListItemClick()
phương pháp bạn đã có, nhưng phản ứng với nhấp chuột dài .
Chỉ cần chắc chắn rằng bạn làm theo hướng dẫn từ this answer, bạn phải sử dụng android:longClickable="true"
trong xml bố trí, hoặc gọi listview.setLongClickable(true);
Ví dụ:
public class MainActivity extends ListActivity implements AdapterView.OnItemLongClickListener {
ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listview = (ListView) findViewById(R.id.list);
listview.setLongClickable(true);
}
@Override
public boolean onItemLongClick(AdapterView<?> l, View v,
final int position, long id) {
Toast.makeText(this, "long clicked pos: " + position, Toast.LENGTH_LONG).show();
return true;
}
protected void onListItemClick(ListView l, View v, final int position, long id) {
super.onListItemClick(l, v, position, id);
Toast.makeText(this, "short clicked pos: " + position, Toast.LENGTH_LONG).show();
}
//....................
Nguồn
2015-07-05 07:29:28
Bạn có thể thử giải thích những gì bạn muốn làm theo một cách khác, với chi tiết hơn không? Mã ví dụ của bạn dường như không thực hiện bất cứ điều gì, vì vậy rất khó đoán ... –
Tôi cần một hàm khi tôi bấm vào thời gian dài (như 2 giây) trên một mục trong listview thì các mã khác của tôi trong hàm thực hiện. – Matarata
bạn đã thử http://stackoverflow.com/questions/8846707/how-to-implement-a-long-click-listener-on-a-listview chưa? –