Ir para conteúdo
  • 0

[Dúvida] Como fazer paginação infinita?


Guest Kawaii

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0


//itens por pagina

int itens = 10;

 

public static List<Faction> getFactionsPaginatorExemple(int pg) {

List<Faction> list = new ArrayList<Faction>();

 

//item max da pagina

int max = pg * itens;

 

//item min da pagina

int min = max - itens;

 

//var para controle

int i = 0;

 

//se a pg for 1 entao o max é 11

if (pg == 1) {

max = itens+1;

}

 

for (Faction f : FactionColl.get().getAll(FactionListComparator.get())) {

i++;

//se o i for maior que o max n passa

if (i > max) {

continue;

}

 

//se o i for <= min n passa

if (i <= min) {

continue;

}

 

//add na lista para o retorno

list.add(f);

}

 

return list;

}

 

ira retornar facçoes entre 21 a 30

getFactionsPaginatorExemple(3);

Link para o comentário
Compartilhar em outros sites

  • 0
public void openMenu(Player p, int pagina) {
    Inventory inv = Bukkit.createInventory(null, 6 * 9,  "Teste #" + pagina);
    
    //Lista de todos os clans
    List<Clan> clans = plugin.getClanManager().getClans();
    //Lista de todos os itens do menu da lista clans
    List<ItemStack> clansitem = new ArrayList<>();
        
    for (Clan relations : clans)
        clansitem.add(ItemStack);
        
    int limitepp = 21;
    int index = pagina * limitepp - limitepp;
    int endIndex = Math.min(index + limitepp, clansitem.size());
		
    int next;
    next = pagina +1;
    if (endIndex > 20 && endIndex != clansitem.size()) {
        //item da proxima página
	inv.setItem(26, new ItemStack(...)));
    }
		
    int previous;
    previous= pagina - 1;
    if (!inv.getName().equalsIgnoreCase("Teste #" + 1)) {
        //item da página anterior
	inv.setItem(18, new ItemStack(...)));
    }
		
		
    int x = 1;
    int h = 1;
    for (; index < endIndex; index++) {
        ItemStack item = clansitem.get(index);
        inv.setItem(x + 9 * h, item);
	if (++x == 8) {
	    x = 1;
	    ++h;
	}
    }
        
        p.openInventory(inv);
}

//No evento:
	@EventHandler
	public void onclick(InventoryClickEvent e) {
		Player p = (Player) e.getWhoClicked();
		Inventory inv = e.getInventory();
		ItemStack item = e.getCurrentItem();
		if (inv.getName().contains("Testes #") && item != null && item.getTypeId() != 0) {
		    e.setCancelled(true);

		    Integer proxima = Integer.valueOf(e.getInventory().getName().split("#")[1]);
		    int next;
		    next = proxima +1;
		    if (item.hasItemMeta() && item.getItemMeta().getDisplayName().equalsIgnoreCase("§aPágina " + next)) {
			openMenu(p, next);
			return;
		    }
				
                    int previous;
		    previous = proxima -1;
		    if (item.hasItemMeta() && item.getItemMeta().getDisplayName().equalsIgnoreCase("§aPágina " + previus)) {
			openMenu(p, previous);
			return;
		    }
               }    
	}

OBS: Não sei quem criou, mas é super eficaz.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...