Get Picklist Values in Apex

In Interview question part 4, we discussed how dynamic Apex can be used to retrieve metadata information about Objects or fields on Object.

While writing highly configurable code, there are situation where we want to avoid hardcoding picklist values and read it realtime from field.

Below code snippet takes two parameter, Object and picklist field name. On basis of these two inputs, we can read either Picklist label or Picklist value (API Name)

String objectName = 'Contact';
String fieldName ='LeadSource';
  
Schema.SObjectType s = Schema.getGlobalDescribe().get(objectName) ;
Schema.DescribeSObjectResult r = s.getDescribe() ;
Map<String,Schema.SObjectField> fields = r.fields.getMap() ;
Schema.DescribeFieldResult fieldResult = fields.get(fieldName).getDescribe();
List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
for( Schema.PicklistEntry pickListVal : ple){
    System.debug(pickListVal.getLabel() +' '+pickListVal.getValue());
}    

2 comments

Leave a Reply to MadCat Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.