Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/12/2013, 20:44
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 1 mes
Puntos: 6
Estuctura para paginar

Hola a todos, acá tengo una consulta es sobre paginación de registros:

la cuestión es que quiero crear una estructura de datos para paginar los datos de otra estructura de datos ya sea una lista o mapa en fin, a esas las convierto en array hasta ahí va bien pero al momento de iniciar las páginas me da este error:

Exception in thread "main" java.lang.NullPointerException
at paginacionnivel2.Cuerpo.main(Cuerpo.java:7)
Java Result: 1

aquí pongo mi código:

package paginacionnivel2;
import java.util.TreeMap;
public class TreePages<E>
{
private final TreeMap<Integer,E[]>colPaginas=new TreeMap();
private final int numPagActual;
private final E[]arreglo;
private int cantXPag;
public void setCantPaginas(int xcantXPag) {
this.cantXPag = xcantXPag;
}
public TreePages(E[] xarreglo, int xcantXPag) {
this.arreglo = xarreglo;
this.cantXPag = xcantXPag;
this.numPagActual=1;
this.iniciarPaginas();
}

public E[] next(){
E[]pagina=null;
if (colPaginas.lastKey() > numPagActual)
{
pagina=colPaginas.get(numPagActual+1);
}
return pagina;
}
public E[] previous() {
E[]pagina=null;
if (colPaginas.firstKey() < numPagActual)
{
pagina=colPaginas.get(numPagActual-1);
}
return pagina;
}
public E[] first(){
E[]pagina=null;
if (colPaginas.firstKey() != numPagActual)
{
pagina=colPaginas.get(colPaginas.firstKey());
}
return pagina;
}
public E[] last(){
E[]pagina=null;
if (colPaginas.lastKey() != numPagActual)
{
pagina=colPaginas.get(colPaginas.lastKey());
}
return pagina;
}
private void iniciarPaginas()
{
int cont=1;
int cantPAG=arreglo.length/cantXPag;
for(E objeto : arreglo)
if(cantPAG!=cont)
{
E[] temporal=(E[])new Object[cantXPag];
for(int i=0;i<cantXPag;i++)
temporal[i]=objeto;
colPaginas.put(cont, temporal);
cont++;
}
}

}

el problema esta en el método iniciarPaginas cuando empieza el for pero de ahí en adelante no se me ocurre nada de cómo resolverlo.

tengo cómo paginar mis datos pero quiero crear esta estructura de datos para q no ponga el largo del array cómo parámetro para obtener la última pagina.

aquí dejo el resto del código:

package paginacionnivel2;
import java.util.LinkedList;
public class ContrRatas
{
private static ContrRatas objgestor=null;
private LinkedList<Ratas>colratas=null;
public static ContrRatas getInstance()
{
if(objgestor==null)
{
objgestor=new ContrRatas();
}
return objgestor;
}
private ContrRatas()
{
colratas=new LinkedList();
Ratas objr1=new Ratas(1,"hjjh");
colratas.add(objr1);
Ratas objr2=new Ratas(2,"vcvc");
colratas.add(objr2);
Ratas objr3=new Ratas(3,"bvbv");
colratas.add(objr3);
Ratas objr4=new Ratas(4,"vcvc");
colratas.add(objr4);
Ratas objr5=new Ratas(5,"jhhj");
colratas.add(objr5);
Ratas objr6=new Ratas(6,"fdfd");
colratas.add(objr6);
Ratas objr7=new Ratas(7,"bhbh");
colratas.add(objr7);
Ratas objr8=new Ratas(8,"rddr");
colratas.add(objr8);
Ratas objr9=new Ratas(9,"aqqa");
colratas.add(objr9);
Ratas objr10=new Ratas(10,"kjjk");
colratas.add(objr10);
Ratas objr11=new Ratas(11,"fdfd");
colratas.add(objr11);
Ratas objr12=new Ratas(12,"gfgf");
colratas.add(objr12);
Ratas objr13=new Ratas(13,"vcvc");
colratas.add(objr13);
Ratas objr14=new Ratas(14,"lkkl");
colratas.add(objr14);
Ratas objr15=new Ratas(15,"jhjh");
colratas.add(objr15);
Ratas objr16=new Ratas(16,"vcvc");
colratas.add(objr16);
Ratas objr17=new Ratas(17,"gfgf");
colratas.add(objr17);
Ratas objr18=new Ratas(18,"hghghg");
colratas.add(objr18);
Ratas objr19=new Ratas(19,"gffg");
colratas.add(objr19);
Ratas objr20=new Ratas(20,"rrffr");
colratas.add(objr20);
}
private Ratas[] devolverArray()
{
Ratas[]aux=new Ratas[colratas.size()];
int cont=0;
for(Ratas objr : colratas)
{
aux[cont]=objr;
cont++;
}
return aux;
}
public TreePages<Ratas>devolverPaginas()
{
TreePages<Ratas>paginas=new TreePages(devolverArray(), 5);
return paginas;
}
}

package paginacionnivel2;
public class Ratas
{
private int numero;
private String nombre;
public int getNumero()
{
return numero;
}
public String getNombre()
{
return nombre;
}
public Ratas(int numero, String nombre)
{
this.numero = numero;
this.nombre = nombre;
}
@Override
public String toString()
{
return "RATA:"+ numero + "NOMBRE" + nombre;
}
}

package paginacionnivel2;
public class Cuerpo
{
public static void main(String[] args)
{
Ratas[]aux=ContrRatas.getInstance().devolverPaginas().fir st();
for(Ratas objr : aux)
{
if(objr!=null)
{
System.out.println(objr);
}
}
}
}

necesito ayuda, si me pueden ayudar se los agradezco.