简体   繁体   English

Android studio,在适配器中调用适配器

[英]Android studio, calling adapter in adapter

I have an adapter that fills up a listview with textviews read from a json file ( https://imgur.com/a/SCeojdM ), now i want to add an autoCompleteTextView to the textviews talked about earlier so its possible to choose possible answers but when i try to add an Arrayadapter (to fill the autocompleteviews) inside my already excisting adapter it wont let me, any ideas how i should do this?我有一个适配器,它用从 json 文件( https://imgur.com/a/SCeojdM )读取的文本视图填充列表视图,现在我想将 autoCompleteTextView 添加到之前讨论的文本视图中,以便可以选择可能的答案但是当我尝试在我已经很兴奋的适配器中添加一个 Arrayadapter(以填充自动完成视图)时,它不会让我知道,我应该如何做到这一点?

my current (not working) code:我当前的(不工作)代码:

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

You can try like this:你可以这样试试:

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

Since you're already in an adapter, you cant reference this as a context, You can get the context from any view of your parent adapter.由于您已经在适配器中,因此不能将this作为上下文引用,您可以从父适配器的任何视图中获取上下文。

Replace代替

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

With

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM