AutoCompleteTextView上的getText()返回SpannableStringBuilder?

时间:2010-10-13 19:15:23

标签: android autocompletetextview

我有一个AutoCompleteTextView,MatrixCursor作为适配器。 AutoCompleteTextView具有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 个答案:

答案 0 :(得分:0)

尝试将SpannableStringBuilder投射到CharSequence

答案 1 :(得分:0)

嗯,代码中总有另一种方式(脏或最好)。

我在AutoCompleteView中添加了TextWatcher并使用beforeTextChanged()事件来记录文本内容,并在onItemClick()中重复使用!