Wrapper class for displaying the selected records in Next page

This scenario mainly describes the usage of Wrapper class. Wrapper class is used to display different types of datatypes in a single table. In the following scenario, we are displaying Boolean and list datatypes.

page1:

<apex:page sidebar="false" controller="WrapTestClass">
<apex:form >
<apex:pageblock >
<apex:pageblocksection >
<apex:pageblocktable value="{!testingrecords}" var="tr">
<apex:column headervalue="Action">
<apex:inputcheckbox value="{!tr.ischecked}"/>
</apex:column>
<apex:column headerValue="Name">
{!tr.TName}
</apex:column>
<apex:column headerValue="City">
{!tr.TCity}
</apex:column>
</apex:pageblocktable>
</apex:pageblocksection>
</apex:pageblock>
<apex:commandButton value="SELECT" action="{!selRecDisplay}"/>
</apex:form>
</apex:page>

 

class1:

public with sharing class WrapTestClass {
	List<string> lstselectedNames = new List<string>();
	public PageReference selRecDisplay() {
		for(wrapper w: lstwrap){
			if(w.ischecked==true){
				lstselectedNames.add(w.Tname);
			}
		}
		List<Testing__c> lstselectedrecords = [select Id,name,city__c from Testing__c where name in : lstselectedNames];
		List<String> lstselectedRecordIds = new List<String>();
		for(Integer i=0;i<lstselectedrecords.size();i++){
			lstselectedRecordIds.add(lstselectedrecords[i].Id);
		}
		string s='';
		for(Integer i=0;i<lstselectedRecordIds.size();i++) {
			if(i<lstselectedRecordIds.size()-1)
			s=s+lstselectedRecordIds[i]+':';
			else
			s=s+lstselectedRecordIds[i];
		}
		pagereference ref = new pagereference('/apex/t123?value='+s);
		ref.setredirect(true);
		return ref;
	}

	List<wrapper> lstwrap = new List<wrapper>();
	List<Testing__c> lsttest = new List<Testing__c>();
	public List<wrapper> getTestingrecords() {
		lsttest = [select Id,name,city__c from Testing__c];
		for(Integer i=0;i<lsttest.size();i++) {
			lstwrap.add(new wrapper(lsttest[i].name,lsttest[i].city__c));
		}
		return lstwrap;
	}
	public class wrapper{
		public String Tname{get;set;}
		public String Tcity{get;set;}
		public boolean ischecked{get;set;}
		public wrapper(String Tname,String Tcity) {
			this.Tname=Tname;
			this.Tcity=Tcity;
			this.ischecked=false;
		}
	}
}

 

page2:

<apex:page controller="DClass">
<apex:form >
<apex:pageBlock >
<apex:pageBlockSection >
<apex:pageBlockTable value="{!records}" var="r">
<apex:column headerValue="Name">
{!r.Name}
</apex:column>
<apex:column headerValue="City">
{!r.City__c}
</apex:column>
</apex:pageBlockTable>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>

class2:

public with sharing class DClass {
	List<Testing__c> lsttest = new List<Testing__c>();
	public List<Testing__c> getRecords() {
		List<String> ids = url.split(':');
		lsttest = [select Id,name,city__c from Testing__c where id in : ids];
		return lsttest;
	}
	String url = apexpages.currentpage().getparameters().get('value');
}