Wenn ich die Frage nicht richtig verstanden habe, ist die Antwort wahrscheinlich einfacher, als Sie vielleicht denken. Der Quellcode für ListPreferece
lehrt, dass es wenig mehr als ein Wrapper um einen AlertDialog
ist, der seine verschiedenen Optionen in einem ListView
anzeigt. Jetzt, AlertDialog
können Sie tatsächlich einen Griff auf die ListView
es Wraps bekommen, die wahrscheinlich alles ist, was Sie brauchen.
In einem der Kommentare haben Sie angegeben, dass Sie in diesem Stadium nur einen langen Druck auf ein beliebiges Element in der Liste erkennen möchten. Anstatt also mit GestureDetector
zu antworten, benutze ich einfach einen 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;
}
}
Das Ergebnis (die der Toast auf lange Klick Anzeigen):
Mit einem Verweis auf die ListView
, können Sie auch ein OnTouchListener
, befestigen GestureDetector
usw. Bis zu Ihnen von hier zu gehen.
Könnten Sie mir bitte sagen, was das Hauptziel dieser Implementierung ist - was ist das erwartete Ergebnis und wofür wird der 'GestureDetector' verwendet? – g00dy
@ g00dy Alles, was ich von diesem Punkt abbekomme, ist ein langes Drücken auf einen beliebigen Gegenstand in der Liste (und natürlich den Index des Gegenstandes, der lange gedrückt wurde). – scatmoi