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
)
我有一个适配器,它用从 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
)