在recyclerview中使用时未在微调器上选择项目

问题描述 投票:0回答:1

[在spinner中使用recyclerview小部件时,我遇到了一个奇怪的问题。所以这个故事是这样的,我有一个带有旋转器的recyclerview,我正在传递列表,该列表需要从片段扩展到recyclereview,如果数据不为空,则在其中创建adapter并将其设置为微调器,但有时有时却不起作用。当获得焦点或在其下方输入编辑文本时,它也适用。

:我已经检查了与此相关的其他问题,是的,我正在使用白色背景和黑色文本颜色布局,这基本上是微调器的自定义布局。我很难弄清楚发生了什么。

这是我在onBindViewHolder()中设置微调器的代码

 @Override
public void onBindViewHolder(FamilyMemberAdapter.ViewHolder holder, int position) {
    FamilyMemberRecyclerViewModel familyMemberModel = familyMemberRecyclerViewModelList.get(holder.getAdapterPosition());

    if (familyMemberModel.getRelationTypeModelList()!=null){
        relationTypeModelArrayAdapter = new ArrayAdapter<RelationTypeModel>(context,R.layout.item_spinner,familyMemberModel.getRelationTypeModelList());
        holder.spnRelationType.setAdapter(relationTypeModelArrayAdapter);
        if (familyMemberModel.getRelationTypeAdapterModel()!=null){
            int positionRelation = relationTypeModelArrayAdapter.getPosition(familyMemberModel.getRelationTypeAdapterModel());
            holder.spnRelationType.setSelection(positionRelation);
        }
    }

}

spinner onItemSelectedListener()

spnRelationType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                //here differentiate between different doc and relation
                uploadDocumentItemsClickListener.onSpinnerChangeListener(spnRelationType,getAdapterPosition(),adapterView.getSelectedItemPosition());
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

这里是正在发生的情况的快照。

这是我正在从微调器中选择项目

enter image description here

这是从微调器中选择一个项目之后。

enter image description here

请让我知道是否需要更多代码。

android android-recyclerview android-spinner recycler-adapter
1个回答
0
投票

我相信这是因为编辑文本仍然具有焦点而不是微调框。尝试这样的事情。

spinner.setFocusableInTouchMode(true);
spinner.setOnFocusChangeListener((v, hasFocus) -> {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            if (spinner.getWindowToken() != null) {
                spinner.performClick();
            }
        }
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.