Android студия, вызывающий адаптер в адаптере - PullRequest
0 голосов
/ 27 марта 2020

У меня есть адаптер, который заполняет представление списка текстовыми представлениями, прочитанными из файла 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);

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Поскольку вы уже находитесь в адаптере, вы не можете ссылаться на 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
)
0 голосов
/ 27 марта 2020

Вы можете попробовать вот так:

  • 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);
...