MultiAutoCompleteTextview的Android inflate列表(MultiAutocompleteTextview位于弹出窗口内)

时间:2016-07-27 13:08:20

标签: android dialog popupwindow layout-inflater multiautocompletetextview

在我的应用程序中,我使用popupwindow扩展了我的自定义视图。

现在里面有一个AutoCompleteTextview提供建议。

现在的问题是,每当我开始在AutoCompleteTextView中输入文本时应用程序崩溃。

错误日志: -

Unable to add window -- token android.view.ViewRootImpl$W@1c6ea57 is not valid; is your activity running?

问题来自: -

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder vh;
        View view = convertView;
        if (view == null) {
            if (inflater == null)
                inflater = LayoutInflater.from(parent.getContext());    // ISSUE
            view = inflater.inflate(R.layout.chips_adapter,parent, false);   // ISSUE
            vh = new ViewHolder();
            vh.tv = (TextView) view.findViewById(R.id.textView1);

            view.setTag(vh);
        } else {
            vh = (ViewHolder) view.getTag();
        }

        vh.tv.setText(suggestions.get(position).getTitle());

        return view;
    }

我认为错误是关于在另一个膨胀的布局上膨胀布局。

1 个答案:

答案 0 :(得分:0)

在适配器类中:

使用context的参数创建构造函数。

示例:(考虑类名是AdapterClass)

Class AdapterClass {
   LayoutInflater inflater;
   private Context context;

   public AdapterClass(Context context){
        this.context = context;
        inflater = LayoutInflater.from(this.context);
   }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder vh;
        View view = convertView;
        if (inflater == null){
            view = inflater.inflate(R.layout.chips_adapter,parent, false);
            vh = new ViewHolder();
            vh.tv = (TextView) view.findViewById(R.id.textView1);
            view.setTag(vh);
        } else {
            vh = (ViewHolder) view.getTag();
        }

        vh.tv.setText(suggestions.get(position).getTitle());

        return view;
    }
}

注意: - 当您调用AdapterClass时,不要忘记使用Context作为参数初始化构造函数。

相关问题