在recyclerview

时间:2017-12-13 11:59:23

标签: android android-recyclerview android-spinner recycler-adapter

spinner中使用recyclerview小部件时,我遇到了一个奇怪的问题。所以故事是这样的,我有一个recyclerview,它有一个微调器,我传递的列表需要从片段膨胀到我创建recyclereview的{​​{1}},如果数据是不为null并将其设置为微调器,但它有时有效,大多数时候没有。它也适用于获得焦点或在其下方输入编辑文本。

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

这是我在adapter

中设置微调器的代码
onBindViewHolder()

}

spinner @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); } }

onItemSelectedListener()

以下是正在发生的事情的快照。

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

enter image description here

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

enter image description here

如果需要更多代码,请告诉我。

1 个答案:

答案 0 :(得分:0)

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

spinner.setFocusableInTouchMode(true);
spinner.setOnFocusChangeListener((v, hasFocus) -> {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            if (spinner.getWindowToken() != null) {
                spinner.performClick();
            }
        }
    }
});