Ir para conteúdo
  • 0

Separar uma ArrayList<String> em páginas, como faço?


GuiHSilva

Pergunta

Glr, to quebrando a cabeça aqui, eu precisava de uma "página de ajuda", e separar os itens em páginas, e os itens estão armazenados em arraylist<string>, só que tipo assim... Quero separar por páginas, e cada página no máximo, teria... uns 8 itens, ai a próxima página, mais 8 itens do array (sem ser os mesmos), tipo uma página de ajuda mesmo? PS: Claro, poderia separar tudo usando if, mas não é essa a finalidade, quero saber o como fazer exatamente como eu disse, você pode me ajudar com isso?

 

Edit: Aí por exemplo, tenho uma arraylist<string> com um size de 17, daí queria separa-los em 2 páginas com 8 itens...e uma com um item... acho q tá muito confuso isso ,-, 

Editado por GuiHSilva
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

Glr, to quebrando a cabeça aqui, eu precisava de uma "página de ajuda", e separar os itens em páginas, e os itens estão armazenados em arraylist<string>, só que tipo assim... Quero separar por páginas, e cada página no máximo, teria... uns 8 itens, ai a próxima página, mais 8 itens do array (sem ser os mesmos), tipo uma página de ajuda mesmo? PS: Claro, poderia separar tudo usando if, mas não é essa a finalidade, quero saber o como fazer exatamente como eu disse, você pode me ajudar com isso?

 

Edit: Aí por exemplo, tenho uma arraylist<string> com um size de 17, daí queria separa-los em 2 páginas com 8 itens...e uma com um item... acho q tá muito confuso isso ,-, 

fiz uma coisa meio doida aqui mas acho que pode funcionar (OBS n testei ainda..)

funciona da seguinte forma

public HashMap<Integer, ArrayList<String>> getPaginas(ArrayList<String> lista) {
		HashMap<Integer, ArrayList<String>> paginas = new HashMap<>();
		int currentpage = 0;
		int currentnumber = 0;
		ArrayList<String> pagina1 = new ArrayList<>();
		paginas.put(0, pagina1);
		for (String s : lista) {
			if (currentnumber < 15/*MAX POR PAGINA*/) {
				paginas.get(currentpage).add(s);
                                currentnumber++;
			} else {
				currentpage++;
                                currentnumber = 0;
				ArrayList<String> proxPagina = new ArrayList<>();
				paginas.put(currentpage, proxPagina);
			}
		}
		return paginas;
	}

para usar é simples

	public void testePaginas() {
		ArrayList<String> players = new ArrayList<>();
		players.add("FilipeNock");
		players.add("Notch");
		players.add("TestPlayer");
		
		HashMap<Integer, ArrayList<String>> paginas = getPaginas(players);
		
		int pagessize = paginas.size(); // QUANTIDADE DE PAGINAS
		
		paginas.get(0) // PAGINA 1 
		paginas.get(1) // PAGINA 2
		paginas.get(2) // PAGINA 3
	}

o hashMap vai retornar a pagina que vc puxar

Editado por FilipeNock
Link para o comentário
Compartilhar em outros sites

ArrayList<String> mensagens = new ArrayList<String>();
int linhasPorPaginas = 8;
int paginaAtual = 1;

int inicio = (paginaAtual - 1) * linhasPorPaginas;
int fim = paginaAtual * linhasPorPaginas >= mensagens.Length() ? mensagens.Length() : paginaAtual * linhasPorPaginas;

for (int i = inicio; i < fim; i++) {
//Todas as linhas de 0 até 8
mensagens.get(i);
}

 

Não testei, então pode ter alguma coisa um pouco errada, mas é só falar que eu arrumo

Editado por caneva20
Link para o comentário
Compartilhar em outros sites

fiz uma coisa meio doida aqui mas acho que pode funcionar (OBS n testei ainda..)

funciona da seguinte forma

public HashMap<Integer, ArrayList<String>> getPaginas(ArrayList<String> lista) {
		HashMap<Integer, ArrayList<String>> paginas = new HashMap<>();
		int currentpage = 0;
		int currentnumber = 0;
		ArrayList<String> pagina1 = new ArrayList<>();
		paginas.put(0, pagina1);
		for (String s : lista) {
			if (currentnumber < 15/*MAX POR PAGINA*/) {
				paginas.get(currentpage).add(s);
                                currentnumber++;
			} else {
				currentpage++;
                                currentnumber = 0;
				ArrayList<String> proxPagina = new ArrayList<>();
				paginas.put(currentpage, proxPagina);
			}
		}
		return paginas;
	}

para usar é simples

	public void testePaginas() {
		ArrayList<String> players = new ArrayList<>();
		players.add("FilipeNock");
		players.add("Notch");
		players.add("TestPlayer");
		
		HashMap<Integer, ArrayList<String>> paginas = getPaginas(players);
		
		int pagessize = paginas.size(); // QUANTIDADE DE PAGINAS
		
		paginas.get(0) // PAGINA 1 
		paginas.get(1) // PAGINA 2
		paginas.get(2) // PAGINA 3
	}

o hashMap vai retornar a pagina que vc puxar

Caraca, deu meio errado, mas eu entendi o método... Estava tentando arrumar, estava no finalzinho, literalmente conseguindo, até voltar no tópico e ler a resposta do caneva20, e teste e deu certo!! Mas obrigado de qualquer jeito!!! 

 

ArrayList<String> mensagens = new ArrayList<String>();
int linhasPorPaginas = 8;
int paginaAtual = 1;

int inicio = (paginaAtual - 1) * linhasPorPaginas;
int fim = paginaAtual * linhasPorPaginas >= mensagens.Length() ? mensagens.Length() : paginaAtual * linhasPorPaginas;

for (int i = inicio; i < fim; i++) {
//Todas as linhas de 0 até 8
mensagens.get(i);
}

 

Não testei, então pode ter alguma coisa um pouco errada, mas é só falar que eu arrumo

 

Resolvido, muito obrigado mesmo!! <3 LIKE

a
Editado por GuiHSilva
Link para o comentário
Compartilhar em outros sites

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