używam następujący kod, aby ustawić adapter (SimpleCursorAdapter) dla AutoCompleteTextViewAutoCompleteTextView wyświetla 'android.database.sqlite.SQLiteCursor @' ... po dokonaniu wyboru
mComment = (AutoCompleteTextView) findViewById(R.id.comment);
Cursor cComments = myAdapter.getDistinctComments();
scaComments = new SimpleCursorAdapter(this,R.layout.auto_complete_item,cComments,new String[] {DBAdapter.KEY_LOG_COMMENT},new int[]{R.id.text1});
mComment.setAdapter(scaComments);
auto_complete_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
i jes to XML rzeczywistej kontroli
<AutoCompleteTextView
android:id="@+id/comment"
android:hint="@string/COMMENT"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18dp"/>
, że d ropdown wydaje się działać poprawnie i wyświetla listę elementów. Kiedy dokonuję selekcji z listy, otrzymuję obiekt sqlite ("android.database.sqlite.SQLiteCursor @" ...) w tekście. Ktoś wie, co by to spowodowało lub jak rozwiązać ten problem?
dzięki
Ok jestem w stanie podłączyć do zdarzenia OnItemClick, ale TextView.setText() część widget AutoCompleteTextView jest aktualizowana po tym punkcie. Zdarzenie OnItemSelected() nigdy nie zostanie wywołane, a zdarzenie onNothingSelected() zostanie wywołane, gdy elementy listy rozwijanej zostaną wyświetlone po raz pierwszy.
mComment.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
SimpleCursorAdapter sca = (SimpleCursorAdapter) arg0.getAdapter();
String str = getSpinnerSelectedValue(sca,arg2,"comment");
TextView txt = (TextView) arg1;
txt.setText(str);
Toast.makeText(ctx, "onItemClick", Toast.LENGTH_SHORT).show();
}
});
mComment.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Toast.makeText(ctx, "onItemSelected", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
Toast.makeText(ctx, "onNothingSelected", Toast.LENGTH_SHORT).show();
}
});
Ktoś ma jakieś pomysły, jak zastąpić aktualizację TextView?
dzięki
Patrick
Tak, masz rację. Po prostu wybieram jedną z opcji z przędzarki, która jest tworzona jako część AutoCompleteTextView. Gdzie lub jak przechwycić funkcjonalność w celu przetworzenia selekcji; użyj getString() na kursorze, zanim zostanie ustawiony jako tekst kontrolki. Dodam także mój xml. – bugzy
"Gdzie lub jak przechwycić funkcjonalność, aby przetworzyć wybór" - już to robisz. Gdzieś, wywołujesz 'setText()' w TextView. Edytuj ten kod. – CommonsWare
To jest sedno ... nie jestem. Jest to wbudowane zachowanie widżetu AutoCompleteTextView, które wypełnia część TextView widżetu AutoCompleteTextView. – bugzy