Как я могу получить несколько страниц для списка?
Итак, я разрабатываю плагин Spigot. Это о друзьях. Если человек выполняет команду, чтобы увидеть список своих друзей, мне нужно иметь страницы, и каждая страница содержит 7 друзей. Дело в том, что это не список друзей, в которых всегда меняется список друзей.
Дело у меня 10 друзей. Я бы получил 7 друзей на первой странице и оставшихся 3 на второй странице. Дело у меня 70 друзей. У меня было бы 10 страниц.
РЕДАКТИРОВАТЬ: Извините за путаницу. Мой вопрос: как я могу сделать это, как в примерах. Игрок делает / список друзей, он показывает страницу 1 с 7 или менее друзьями, если у него нет 7. Если у него есть больше, будет вторая страница: / список друзей 2. и так далее.
2 ответа
Это код, как рассчитать, сколько страниц необходимо. Это работает в 95% случаев, если кто-нибудь знает лучшее решение, пожалуйста, отредактируйте его, так как я также пытаюсь улучшить этот алгоритм.
int friendsPerPage = 5;
int friendsIHave = 20;
int pages = (friendsIHave / friendsPerPage ) + (friendsIHave % friendsPerPage == 0 ? 0 : 1);
Я предполагаю, что вы знаете, как получить список / друзей (LISTHERE). Давайте сохраним LISTHERE в переменной страницы. Тогда мы можем просто распечатать его содержимое:
int page = ... // you have to make this one
int max = page * friendsPerPage;
int min = max - friendsPerPage;
for(int i = min + 1; i <= max; i++) { // loop through all friends in that page
// access your friend array here and print it out using "i"
}
Я надеюсь, что это поможет вам!
Как бы вы увидели друзей?
Как GUI (Inventar) или в чате?
Код для графического интерфейса (не полный):
ArrayList<String> players = new ArrayList<>();
int pages = ((players.size-(players.size()%7))/7)+(players.size()%7 == 0 ? 0 : 1);
ArrayList<String>[] pages = new ArrayList<>()[pages];
int lastpage = 0;
int i = 0;
for(String name : players)
{
pages[lastpage].add(name);
i++;
if(i == 6){
i = 0;
lastpage ++;
}
}
страницы является массивом страниц. Как вы показываете их, ваше решение.