I have list which hold records of an object "XYZ". I have an ID of a record of "XYZ" object which should display in list[0] and remaining records next. I am displaying the records using wrapper class. How would I add the matched record to list of zero?

I am adding the records to wrapper class in following way:


if (xyz.id==r) {
  if (WrapperList.isEmpty()) {
     WrapperList.set(0,new VWrappers(v,G,xyz));
} else {   
  WrapperList.add(new VWrappers(v,G,xyz));

But this would remove and replace it. The initial list[0] is lost.

I am using standard set controller for pagination:

con = new ApexPages.StandardSetController(Database.query(query)); 

I am passing the records to a wrapper class and displaying the records on the Visualforce page. I want the replace replace the list[0] so that I can display records of my choice initially.


1 Answer 1


You can use a combination of list methods.

//start context
list<string> lst= new list<string>{'aa','bb','cc','dd'};
string var = 'cc';

//find the index of var
integer index; 
for(integer i =0;i< lst.size();i++){
 if(var==lst[i]) index=i;
//may want to throw an exception if index is still null

list<string> tempLst = lst.clone();//backup your collection
lst.clear(); //empty your collection

lst.add(tempLst[index]); //retrieve your desired record and put it on index 0
tempLst.remove(index); //remove your record from the old collection
lst.addAll(tempLst); //add the other data to your list 

system.debug(lst); /// |USER_DEBUG|[22]|DEBUG|(cc, aa, bb, dd)

But, logic like this might imply you should consider exploring the apex map collection type and its methods. Know you can use the map.values() property to still reference it as a list, or can directly iterate over a map in Visualforce too.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .