как отсортировать вид карты в режиме рециркуляции в Android - PullRequest
0 голосов
/ 27 марта 2019

У меня есть ответ API, как показано ниже:

 [      
        {
            accountType: a,
            accountId: 1,
            accountStatus: active,
            isDefault: false,
            accountName: texas1
        }, {
            accountType: b,
            accountId: 1,
            accountStatus: active,
            isDefault: false,
            accountName: texas2
        }, {
            accountType: c,
            accountId: 1,
            accountStatus: active,
            isDefault: true,
            accountName: texas4
        }, {
            accountType: a,
            accountId: 1,
            accountStatus: active,
            isDefault: false,
            accountName: texas5
        }, {
            accountType: b,
            accountId: 1,
            accountStatus: active,
            isDefault: false,
            accountName: texas6
        },
        {
            accountType: a,
            accountId: 1,
            accountStatus: active,
            isDefault: false,
            accountName: texas7
        }, {
            accountType: b,
            accountId: 1,
            accountStatus: active,
            isDefault: false,
            accountName: texas9
        }  ]

Я хочу, чтобы истинная учетная запись isDefault отображалась как первая cardview, а accountType - как c, затем сортировка по типу учетной записи должна выполняться так же, как и учетная запись типа a, а также весь список учетных записей и тип учетной записи b. и весь его список аккаунтов. по всей моей карте должно понравиться это

  • тип счета c
  • ниже карты по умолчанию
  • затем тип счета a
  • все карты
  • затем тип счета b
  • все карты

Я всегда хочу, чтобы карта isDefault находилась сверху независимо от типа ее счета, тогда я хочу отсортировать cardView на основе accountType как a, b, c и т. Д. Я отображаю тип учетной записи, затем cardView ниже в xml макете Как этого добиться на Bindview? любая помощь приветствуется

1 Ответ

0 голосов
/ 27 марта 2019

RecyclerView будет отображать элементы в том порядке, в котором вы передаете их в адаптер.Вам нужно переставить элементы в том порядке, в котором вы хотите, чтобы они были, и затем передать их адаптеру, чтобы они могли отображаться.Простой пример на основе вашего ввода

//This is just a data class for our API response
class Account {
    String accountType;
    int accountId;
    boolean accountStatus;
    boolean isDefault;
    String accountName;
}

//Lets say that you have your API response in a list as such
List<Account> accountList = new ArrayList<>();
accountList.add(/*Response from API*/);

//Now we create a sorted list based on your rules
List<Account> sortedAccountList = new ArrayList<>();

//First we need the isDefault account
for (Account account : accountList) {
    if (account.isDefault) {
        sortedAccountList.add(account);
        accountList.remove(account);
        break;
    }
}

//Now we add all 'c' type accounts
for (Account account : accountList) {
    if (account.accountType.equals("c")) {
        sortedAccountList.add(account);
        accountList.remove(account);
    }
}

//Do the same as above for the other account types. You can also apply more rules as per your needs.
...