Android spinner inside a custom control - OnItemSelectedListener does not trigger
- by Idan
I am writing a custom control that extends LinearLayout. Inside that control I am using a spinner to let the user select an item from a list.
The problem I have is that the OnItemSelectedListener event does not fire. When moving the same code to an Activity/Fragment all is working just fine.
I have followed some answers that was given to others asking about the same issue, and nothing helped. still the event does not fire.
This is my code after I followed the answers that suggested to put the spinner inside my layout XML instead of by code. I am getting the same result when I try to just "new Spinner(ctx)"...
layout XML:
<Spinner
android:id="@+id/accSpinner"
android:layout_width="0dip"
android:layout_height="0dip" />
Initialization function of the control (called on the control constructor):
private void init()
{
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
mAccountBoxView = layoutInflater.inflate(R.layout.control_accountselector, null);
mTxtAccount = (TextView)mAccountBoxView.findViewById(R.id.txtAccount);
mSpinner = (Spinner)mAccountBoxView.findViewById(R.id.accSpinner);
mAccountBoxView.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
mSpinner.performClick();
}
});
setSpinner();
addView(mAccountBoxView);
}
private void setSpinner()
{
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_spinner_item, mItems);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(dataAdapter);
mSpinner.setOnItemSelectedListener(new OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
String selectedItem = mItems.get(position);
handleSelectedItem(selectedItem);
}
@Override
public void onNothingSelected(AdapterView<?> parent)
{
}
});
}
The spinner raises just fine when i touch my control and the list of items is there as it should.
When I click an item the spinner closes but I am never getting to onItemSelected nor onNothingSelected..
Any ideas?