2017-01-31 15:51:02 +11:00
|
|
|
/* Copyright 2017 Andrew Dawson
|
|
|
|
*
|
|
|
|
* This file is part of Tusky.
|
|
|
|
*
|
|
|
|
* Tusky is free software: you can redistribute it and/or modify it under the terms of the GNU
|
|
|
|
* General Public License as published by the Free Software Foundation, either version 3 of the
|
|
|
|
* License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
|
|
|
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
|
|
* Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License along with Tusky. If not, see
|
|
|
|
* <http://www.gnu.org/licenses/>. */
|
|
|
|
|
|
|
|
package com.keylesspalace.tusky;
|
|
|
|
|
|
|
|
import android.support.v7.widget.RecyclerView;
|
|
|
|
|
2017-03-09 09:19:03 +11:00
|
|
|
import com.keylesspalace.tusky.entity.Account;
|
|
|
|
|
2017-01-31 15:51:02 +11:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
2017-02-22 13:12:49 +11:00
|
|
|
abstract class AccountAdapter extends RecyclerView.Adapter {
|
|
|
|
List<Account> accountList;
|
|
|
|
AccountActionListener accountActionListener;
|
2017-01-31 15:51:02 +11:00
|
|
|
|
2017-03-11 07:12:40 +11:00
|
|
|
AccountAdapter(AccountActionListener accountActionListener) {
|
2017-01-31 15:51:02 +11:00
|
|
|
super();
|
2017-02-22 13:12:49 +11:00
|
|
|
accountList = new ArrayList<>();
|
2017-01-31 15:51:02 +11:00
|
|
|
this.accountActionListener = accountActionListener;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int getItemCount() {
|
2017-02-22 13:12:49 +11:00
|
|
|
return accountList.size() + 1;
|
2017-01-31 15:51:02 +11:00
|
|
|
}
|
|
|
|
|
2017-02-22 13:12:49 +11:00
|
|
|
void update(List<Account> newAccounts) {
|
2017-03-20 18:03:03 +11:00
|
|
|
if (newAccounts == null || newAccounts.isEmpty()) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (accountList.isEmpty()) {
|
2017-02-22 13:12:49 +11:00
|
|
|
accountList = newAccounts;
|
2017-01-31 15:51:02 +11:00
|
|
|
} else {
|
2017-03-20 18:03:03 +11:00
|
|
|
int index = accountList.indexOf(newAccounts.get(newAccounts.size() - 1));
|
|
|
|
for (int i = 0; i < index; i++) {
|
|
|
|
accountList.remove(0);
|
|
|
|
}
|
|
|
|
int newIndex = newAccounts.indexOf(accountList.get(0));
|
|
|
|
if (newIndex == -1) {
|
2017-02-22 13:12:49 +11:00
|
|
|
accountList.addAll(0, newAccounts);
|
2017-01-31 15:51:02 +11:00
|
|
|
} else {
|
2017-03-20 18:03:03 +11:00
|
|
|
accountList.addAll(0, newAccounts.subList(0, newIndex));
|
2017-01-31 15:51:02 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
notifyDataSetChanged();
|
|
|
|
}
|
|
|
|
|
2017-02-22 13:12:49 +11:00
|
|
|
void addItems(List<Account> newAccounts) {
|
|
|
|
int end = accountList.size();
|
|
|
|
accountList.addAll(newAccounts);
|
2017-01-31 15:51:02 +11:00
|
|
|
notifyItemRangeInserted(end, newAccounts.size());
|
|
|
|
}
|
|
|
|
|
|
|
|
public Account getItem(int position) {
|
2017-02-22 13:12:49 +11:00
|
|
|
if (position >= 0 && position < accountList.size()) {
|
|
|
|
return accountList.get(position);
|
2017-01-31 15:51:02 +11:00
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|