ArrayAdapter导致ClassCastException

时间:2013-11-05 17:57:38

标签: android android-layout android-arrayadapter android-adapter

我在RelativeLayout内的FrameLayout内有一个AutoCompleteTextView。我想使用声明如下的类填充完成列表:

public class AutoCompleteAdapter extends ArrayAdapter<String> implements Filterable {
 ...
 public AutoCompleteAdapter(Context context, int textViewResourceId) {
    super(context, textViewResourceId);
    data = new ArrayList<String>();
 }
 ...
}

我按如下方式连接了适配器:

AutoCompleteTextView tv = (AutoCompleteTextView) v.findViewById(R.id.editTextClient);
    AutoCompleteAdapter adapter = new AutoCompleteAdapter(getActivity(), R.layout.fragment_main_right);
    tv.setAdapter(adapter);

其中R.layout.fragment_main_right是上面提到的封闭FrameLayout。当我开始输入文字时,我收到ClassCastException,其中包含以下消息:"android.widget.FrameLayout cannot be cast to android.widget.TextView"。我理解这意味着ArrayAdapter构造函数中的第二个参数应该是从TextView派生的内容的id。所有示例都将此参数显示为封闭布局。有人可以解决我的困惑吗?

1 个答案:

答案 0 :(得分:0)

对于适配器构造函数中的第二个参数,请传入android.R.layout.simple_dropdown_item_1line或android.R.layout.simple_list_item_1。

提示提示它需要通过参数名称的textview:textViewResoureceId。