0

I have a weird problem when using spinner widget inside a recyclerview. So the story is like this I have a recyclerview which has the spinner and I am passing list which needs to be inflated from fragment to the recyclereview where I am creating adapter if the data is not null and setting it into the spinner, but it works sometimes and most of the times not. It also works when getting focus or typing in edit text below it.

Note: I have already checked the other questions related this and yes I am using a white background with black text color layout which is basically a custom layout for the spinner. I am having a hard time figuring out what is going on.

This is my code for setting spinner in 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) {

            }
        });

Here is snapshot of what is going on.

This is I am selecting item from the spinner

enter image description here

This is after selecting an item from the spinner.

enter image description here

Please let me know if more code needed.

P.K
  • 263
  • 2
  • 9

1 Answers1

0

I believe this is because the edit text still has the focus and not on the spinner. Try something like this.

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