سؤال

لديّ إكمال تلقائي مع مصفوفة كمحول. يحتوي OutoCompleTeTextView على onItemClickListener على النحو التالي:

public class AutoCompleteListClickListner implements OnItemClickListener
{
    private AutoCompleteTextView acView;

    public AutoCompleteListClickListner(AutoCompleteTextView view)
    {
        this.acView = view;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    {
        /* tv is the selected view in the dropdown */
        TextView tv = (TextView) ((LinearLayout) view).getChildAt(0);
        Log.d(AndroidLogTag, "Before:>>>>" + this.acView.getText().toString());
        this.acView.setText(tv.getText().toString());
        Log.d(AndroidLogTag, "After:>>>>" + this.acView.getText().toString());
    }
}

عند تحديد عنصر ما ، أرى متابعًا في السجل

10-14 00:34:37.893: DEBUG/MyApp(19151): Before:>>>>android.database.MatrixCursor@4643e388
10-14 00:34:37.912: DEBUG/MyApp(19151): After:>>>>Ankit V Jain

إذا رأيت السجل ، Before إدخال السجل ، getText() إرجاع أ SpannableStringBuilder كائن و toString() منه يعيد بعض معرف الكائن.

كيف أحصل على نص فعلي للعرض التلقائي الذي كان موجودًا قبل النقر فوق العنصر المنسدلة؟

هل كانت مفيدة؟

المحلول 2

حسنًا ، هناك دائمًا طريقة أخرى (قذرة أو أفضل) في الكود.

أضفت أ TextWatcher إلى الإكمال التلقائي واستخدامه beforeTextChanged() حدث لتسجيل محتوى النص وإعادة استخدامه في onItemClick() !

نصائح أخرى

حاول الصب SpannableStringBuilder إلى CharSequence

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top