A meno che non abbia risposto correttamente alla domanda, la risposta è probabilmente più semplice di quanto si possa pensare. Il codice sorgente per ListPreferece
indica che è poco più di un wrapper attorno a uno AlertDialog
che visualizza le sue varie opzioni in un ListView
. Ora, AlertDialog
consente effettivamente di ottenere un handle sul pacchetto ListView
, che probabilmente è tutto ciò che serve.
In uno dei commenti hai indicato che, in questa fase, tutto ciò che ti interessa è il rilevamento di una pressione prolungata su qualsiasi elemento nell'elenco. Quindi piuttosto che rispondere allegando un GestureDetector
, userò semplicemente un OnItemLongClickListener
.
public class ListPreferenceActivity extends PreferenceActivity implements OnPreferenceClickListener {
private ListPreference mListPreference;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.list_prefs);
mListPreference = (ListPreference) findPreference("pref_list");
mListPreference.setOnPreferenceClickListener(this);
}
@Override
public boolean onPreferenceClick(Preference preference) {
AlertDialog dialog = (AlertDialog) mListPreference.getDialog();
dialog.getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(getApplicationContext(), "Long click on index " + position + ": "
+ parent.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();
return false;
}
});
return false;
}
}
Il risultato (che il brindisi nel lungo click visualizzazione):
Con un riferimento al ListView
, si potrebbe anche allegare un OnTouchListener
, GestureDetector
ecc Fino a voi per andare da qui.
fonte
2013-06-27 19:34:21
Potrebbe dirmi qual è l'obiettivo principale di questa implementazione: qual è il risultato atteso e per che cosa verrà utilizzato "GestureDetector"? – g00dy
@ g00dy Tutto ciò che voglio a questo punto è rilevare una pressione prolungata su qualsiasi elemento nell'elenco (e naturalmente restituire l'indice dell'elemento premuto a lungo). – scatmoi