Как заполнить другой объект теми же полями или свойствами в том же recyclerview в android

Я собираюсь разработать приложение для футбола и после ответа json. (ссылка)

У меня есть два разных класса с разными именами, но с одинаковыми свойствами или полями и вы хотите отобразить один и тот же сингл RecyclerView.

Здесь у меня есть мир и мир, имеющие те же поля, что и matchTime, startTime и endTime. Я создал класс pojo, используя плагин jsontopojo.

Вот основные вещи, я хочу отобразить worldmatch в позиции 0 и остальную часть мира позиции на основе клуба. Вы можете увидеть более подробную информацию на картинке.

введите описание изображения здесь

введите описание изображения здесь

Это должна быть первая вкладка (мир) и аналогично другой вкладке, например Европа, Азия с соответствующим аналогичным шаблоном.

Tab1 (Мир)

---------------position 0 (All match)------------------
|
| 930   1100   1130  and so on ( horizontal recyclerview)
|
-------------------------------------------
---------------position 1(Barcelona)------------------
|
| 1130   1230   1330   1430  and so on (  horizontal recyclerview)
|
-------------------------------------------
---------------position 2(Chelsea)------------------
|
| 1300   1400   1500  and so on (  horizontal recyclerview)
|
-------------------------------------------
                     .
                     .
                     .
                   so on
        (vertical recyclerview)

Подробное описание изображения:

введите описание изображения здесь

У меня есть два адаптера Recycliewiew, первый из которых отображает название клуба и передает соответствующие данные другому виду ресайклеров, которые будут отображать горизонтальный вид с временным matchTime.

Засекретировало положение Outer Recyclerview 0, worldmatch и отражает все остальные, как передать заполненные и worldmatch и мир данные в том же режиме и как отфильтровать всю вкладку.

Отобразите поле matchTime только из списка WorldMatch в позиции 0 и World в списке ниже 0. (горизонтальный recyclerview)

У любого есть какая-то идея, которая действительно полезна для меня и высоко ценит любую идею этого. Спасибо заранее.

Ответ 1

Это возможно. Теперь вы можете установить значение для другого класса во время разбора ответа или установить время адаптера. Я тоже так делал. Например:

   setmatches(List<club.wordlWild> ww){
   List<WorldWild> list = new ArrayList<>();
   for(club.worlWide cw : ww){
     WorldWild w = new WorldWild ();
     w.setMatchTime(cw.getMatchtimie);
     ..
     ...// set values
    list.add(w);
    }
   }

Теперь вы можете добавить значения club.worlWide в WorldWild. Если вы хотите, чтобы изменения делали наоборот.

Ответ 2

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

Если вы хотите взглянуть на то, как вы собираетесь добавлять верхний или нижний колонтитул в RecyclerView, вы можете взять здесь ответ.

Как только вы закончите с добавлением worldMatch в качестве заголовка вашего вертикального RecyclerView, вы будете передавать данные world в адаптере вашего RecyclerView и показывать их соответствующим образом.

Сообщите мне, есть ли у вас какие-либо недоумения.

Ответ 3

Я рекомендую вам создать класс TabData, который вы будете использовать для каждой вкладки.

public class TabData {
    private List<TimeData> regionTimes;
    private List<Pair<String, List<TimeData>>> clubTimes = new ArrayList<>();

    public void setRegionTimes(List<TimeData> list) {
        this.regionTimes = list;
    }

    public void putClubTimes(String clubName, List<TimeData> times) {
        clubTimes.add(new Pair<>(clubName, times);
    }

    // Getters
}

Это будет класс TimeData.

public class TimeData {
    int matchTime;
    String startTime;
    String endTime;
}

Затем, например, чтобы отобразить первую вкладку (вкладка "Мир" ), вы должны сделать следующее:

TabData worldTabData = new TabData();
worldTabData.setRegionTimes(jsonData.getSoccer().getWorldMatch());

for (ClubData clubData : jsonData.getSoccer().getClubs()) {
    String clubName = clubData.getClubProfile().getClubName();
    List<TimeData> times = clubData.getWorld();
    worldTabData.putClubTimes(clubName, times);
}

regionAdapter = new RegionAdapter(worldTabData);

И это будет адаптер внешнего RecyclerView (вертикальный):

public class RegionAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private TabData data;

    public RegionAdapter(TabData data) {
        this.data = data;
    }

    public int getItemCount() {
        return 1 + data.getClubTimes().size(); // One row per club plus another one for position 0
    }

    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (position == 0) {
            // Set adapter for horizontal recyclerview with data.getRegionTimes()
        } else {
            Pair<String, List<TimeData>> clubTime = data.getClubTimes(position - 1);
            // Set textview with club.first
            // Set adapter for horizontal recyclerview with clubTime.second
        }
    }
}

Надеюсь, ты получишь идею!

Сообщите мне.

Спасибо.

Ответ 4

Я сделал что-то подобное с помощью родительского класса для использования в адаптере, но в вашем случае можно было бы иметь только один класс для каждого соответствия.