Android 工作室,在适配器中调用适配器

Android studio, calling adapter in adapter

我有一个适配器,它用从 json 文件 (https://imgur.com/a/SCeojdM) 读取的文本视图填充列表视图,现在我想向前面提到的文本视图添加一个 autoCompleteTextView,这样就可以选择可能的答案,但是当我尝试在我已经存在的适配器中添加一个 Arrayadapter(以填充自动完成视图)时,它不会让我知道我应该怎么做?

我当前的(不工作)代码:

    public View getView(final int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;

        if (convertView == null) {...}
        else {...}

        holder.editText.setHint(HintArrayList.get(position).getEditTextValue());
        holder.editText.setThreshold(1);


--->    // not possible?
--->    ArrayAdapter adapter = new ArrayAdapter<String>
--->          (this,android.R.layout.select_dialog_item, MainActivity.OptiesArray); //cannot resolve  constructor 'ArrayAdapter'

        holder.editText.setAdapter(MainActivity.adapter);

你可以这样试试:

  • XML
    <androidx.appcompat.widget.AppCompatAutoCompleteTextView
                android:id="@+id/yourid"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="text"
                android:maxLines="1"
                android:textColor="@color/colorBlack"
                android:textColorHint="@color/colorGrayDark"
                android:textSize="18sp"
                android:textStyle="bold"
                />
  • JAVA
    holder.editText = convertView.findViewById(R.id.yourid);
    ArrayAdapter<String> adapter=new ArrayAdapter<String>(parent.getContext(),android.R.layout.simple_list_item_1,MainActivity.OptiesArray);
            holder.editText.setAdapter(adapter);

因为你已经在一个适配器中,你不能引用 this 作为上下文, 您可以从父适配器的任何视图获取上下文。

替换

ArrayAdapter adapter = new ArrayAdapter<String>(
    this,
    android.R.layout.select_dialog_item,
    MainActivity.OptiesArray
)

ArrayAdapter adapter = new ArrayAdapter<String>(
    holder.editText.getContext(),
    android.R.layout.select_dialog_item,
    MainActivity.OptiesArray
)