AutoCompleteTextView erkennen, wenn der Benutzer wählte Vorschlag
Ich nur wan ' T, die Benutzer können auf eine Schaltfläche klicken, wenn Sie gedrückt haben, wird ein Vorschlag von meiner autocompleteTextview.
Um dies zu erreichen, ich implementiert eine onKeyListener im mein adapter und das tag entfernt wurde, indem Sie den adapter, wenn Sie gedrückt, ein Vorschlag. Dann habe ich geprüft, ob es tag war.
Aber die onKeyListener nicht scheinen, entfernen Sie den tag richtig:
public class StopCursorAdapter extends CursorAdapter{
private Context context;
private LayoutInflater inflater;
private AutoCompleteTextView autoCompleteTextView;
public StopCursorAdapter(final AutoCompleteTextView autoCompleteTextView, Context context, Cursor c){
super(context, c);
this.context = context;
this.autoCompleteTextView = autoCompleteTextView;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.autoCompleteTextView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event){
StopCursorAdapter.this.autoCompleteTextView.setTag(null);
Log.d("cursor", "Removed tag");
Log.d("cursor", String.valueOf(StopCursorAdapter.this.autoCompleteTextView.getTag() == null));
Log.d("cursor", String.valueOf(autoCompleteTextView.getTag() == null));
return false;
}
});
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent){
View v = inflater.inflate(android.R.layout.two_line_list_item, null);
return v;
}
@Override
public void bindView(View view, Context context, Cursor cursor){
TextView txt1 = (TextView) view.findViewById(android.R.id.text1);
TextView txt2 = (TextView) view.findViewById(android.R.id.text2);
txt1.setTextColor(Color.BLACK);
txt1.setText(cursor.getString(2));
txt2.setText(cursor.getString(3));
}
@Override
public CharSequence convertToString(Cursor cursor){
autoCompleteTextView.setTag(new Stop(cursor.getString(1), cursor.getString(2), cursor
.getString(3)));
return cursor.getString(2);//+ ", " + cursor.getString(3);
}
@Override
public Cursor runQueryOnBackgroundThread(CharSequence constraint){
Database.getInstance().ensureLoaded(context);
String filter = "";
if(constraint == null){
filter = "";
}else{
filter = constraint.toString();
}
Cursor cursor = Database.getInstance().getStopsCursor(filter);
return cursor;
}
}
Gibt es eine andere Möglichkeit, dieses Problem zu lösen?
InformationsquelleAutor Richard | 2011-11-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blick auf den code:
setTag(new Stop(...))
heißt aus dem adapter derconvertToString()
Methode, die aufgerufen werden, indem Sie die AutoCompleteTextView, wenn es sich um den Aufbau der Auswahl-Liste (für jede Zeile im cursor), und auch wenn es mit dem Abschluss. Ich glaube nicht, dass dies ist, was Sie wollen.setTag(null)
wird aufgerufen, aus dem HörerOnKey()
Methode wird aufgerufen, wenn der Benutzer Tippen Sie auf die Tasten auf der Tastatur. Ich glaube nicht, dass dies korrekt ist.Ich denke, der richtige code sollte etwas ähnliches statt:
InformationsquelleAutor Joe
Können Sie die setOnClickListner Methode der ' auto-vervollständigen-text-Ansicht. ausgewählten Element listener wird ausgelöst, wenn die Liste ein Element den Fokus erhält & nicht auf klicken(Auswahl) des Artikels.
dann,
Ich hoffe das hilft..
InformationsquelleAutor R.daneel.olivaw
Hmm es nicht verstehen, warum Sie mit dem tag. Vielleicht bin ich fehlen eine Einschränkung.
Ansonsten, ich denke, das ist, was Sie gehen nach:
InformationsquelleAutor Ian