In order to disable list items on list creation you have to subclass from ArrayAdapter
. You have to override the following methods: isEnabled(int position)
and areAllItemsEnabled()
. In former you return true
or false
depending is list item at given position enabled or not. In latter you return false
.
If you want to use createFromResource()
you will have to implement that method as well, since the ArrayAdapter.createFromResource()
still instantiates ArrayAdapter
instead of your own adapter.
Finally, the code would look something like the following:
class MenuAdapter extends ArrayAdapter<CharSequence> {
public MenuAdapter(
Context context, int textViewResId, CharSequence[] strings) {
super(context, textViewResId, strings);
}
public static MenuAdapter createFromResource(
Context context, int textArrayResId, int textViewResId) {
Resources resources = context.getResources();
CharSequence[] strings = resources.getTextArray(textArrayResId);
return new MenuAdapter(context, textViewResId, strings);
}
public boolean areAllItemsEnabled() {
return false;
}
public boolean isEnabled(int position) {
// return false if position == position you want to disable
}
}