Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 77
1

Две вьюшки для RecyclerView

28.03.2016, 15:53. Показов 629. Ответов 0

Author24 — интернет-сервис помощи студентам
У меня проблема в том, что нужно создать лист в котором 2 вьюшки, то есть первый Итем как Header идет, а второй динамически увеличивается. Сперва думал первый сделать как обычный блок а второй в `RecyclerView`, но почему-то мне показалось это неправильным. Так вот решил сделать на `RecyclerView` и в инете покапался и нашел один метод. Но почему то пустой экран.

Что мне нужно:

Две вьюшки для RecyclerView


У них один и тот же модель тоесть,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
    public class TicketObjects {
 
    private String departCity;
    private String departAirport;
    private String arriveCity;
    private String arriveAirport;
 
    private String departCode;
    private String departTime;
    private String departDate;
    private String arriveCode;
    private String arriveTime;
    private String arriveDate;
    private String transferCity;
    private String flyDuration;
    private String ticketPrice;
    private int airlineLogo;
    private String flight;
 
    public TicketObjects(String departCity, String departAirport, String arriveCity, String arriveAirport,
                         String departCode, String departTime, String departDate,
                         String arriveCode, String arriveTime, String arriveDate,
                         String transferCity, String flyDuration, String ticketPrice, int airlineLogo, String flight) {
 
 
        this.departCity = departCity;
        this.departAirport = departAirport;
        this.arriveCity = arriveCity;
        this.arriveAirport = arriveAirport;
 
        this.departCode = departCode;
        this.departTime = departTime;
        this.departDate = departDate;
        this.arriveCode = arriveCode;
        this.arriveTime = arriveTime;
        this.arriveDate = arriveDate;
        this.transferCity = transferCity;
        this.flyDuration = flyDuration.trim().replaceFirst("^[0]{1}", "").replace(":", " h ") + " m";
        this.ticketPrice = ticketPrice;
        this.airlineLogo = airlineLogo;
        this.flight = flight;
    }
**и так далее...
Вот мой адаптер:**
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
    package kz.ticketdetail;
 
    import android.content.Context;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.TextView;
 
    import java.util.List;
 
    public class DetailsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
    private static final int TYPE_HEADER = 0;
    private static final int TYPE_ITEM = 1;
 
    List<TicketObjects> ticketItems;
    List<TicketObjects> ticketsHeader;
    LayoutInflater layoutInflater;
    Context context;
 
    public DetailsAdapter(Context context, List<TicketObjects> ticketItems, List<TicketObjects> ticketsHeader){
        this.context = context;
        layoutInflater = LayoutInflater.from(context);
        this.ticketItems = ticketItems;
        this.ticketsHeader = ticketsHeader;
    }
 
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
 
        if(viewType == TYPE_HEADER)
        {
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.ticket_details_header_item, parent, false);
            return  new DetailsHeader(v);
        }
        else if(viewType == TYPE_ITEM)
        {
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.ticket_details_item, parent, false);
            return new DetailsItem(v);
        }
        return null;
    }
 
    private TicketObjects getItem(int position)
    {
        return ticketItems.get(position);
    }
 
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int i) {
 
 
        if(holder instanceof DetailsHeader)
        {
            TicketObjects currentItem = getItem(i);
            DetailsHeader headerItem = (DetailsHeader)holder;
                
    headerItem.detTotalDuration.setText(currentItem.getFlyDuration());
            headerItem.detDepartTime.setText(currentItem.getDepartTime());
            headerItem.detDepartDate.setText(currentItem.getDepartDate());
            headerItem.detArriveTime.setText(currentItem.getArriveTime());
            headerItem.detArriveDate.setText(currentItem.getArriveDate());
            headerItem.depDepartCity.setText(currentItem.getDepartCity());
            headerItem.detDepartAirport.setText(currentItem.getDepartAirport());
            headerItem.detArriveCity.setText(currentItem.getArriveCity());
            headerItem.detArriveAirport.setText(currentItem.getArriveAirport());
 
            headerItem.detFlight.setText(currentItem.getFlight());
            headerItem.airlineLogo.setImageResource(currentItem.getAirlineLogo());
 
 
        }
 
        if(holder instanceof DetailsItem)
        {
            TicketObjects currentItem = getItem(i);
            DetailsItem detailsItem = (DetailsItem)holder;
            detailsItem.detTotalDuration.setText(currentItem.getFlyDuration());
            detailsItem.detDepartTime.setText(currentItem.getDepartTime());
            detailsItem.detDepartDate.setText(currentItem.getDepartDate());
            detailsItem.detArriveTime.setText(currentItem.getArriveTime());
            detailsItem.detArriveDate.setText(currentItem.getArriveDate());
            detailsItem.depDepartCity.setText(currentItem.getDepartCity());
            detailsItem.detDepartAirport.setText(currentItem.getDepartAirport());
            detailsItem.detArriveCity.setText(currentItem.getArriveCity());
              detailsItem.detArriveAirport.setText(currentItem.getArriveAirport());
 
            detailsItem.detFlight.setText(currentItem.getFlight());
            detailsItem.airlineLogo.setImageResource(currentItem.getAirlineLogo());
        }
 
    }
 
    @Override
    public int getItemViewType(int position) {
        if(isPositionHeader(position))
            return TYPE_HEADER;
        return TYPE_ITEM;
    }
 
    private boolean isPositionHeader(int position)
    {
        return position == 0;
    }
 
    @Override
    public int getItemCount() {
        return ticketItems.size();
    }
 
    class DetailsHeader extends RecyclerView.ViewHolder{
 
        TextView detTitleArriveCity;
        TextView detTitleDepartCity;
        TextView detTotalDuration;
 
        TextView detDepartTime;
        TextView detDepartDate;
        TextView detArriveTime;
        TextView detArriveDate;
        TextView depDepartCity;
        TextView detDepartAirport;
        TextView detArriveCity;
        TextView detArriveAirport;
        TextView detFlight;
 
        ImageView airlineLogo;
 
        public DetailsHeader(View itemView) {
            super(itemView);
 
            this.detTitleDepartCity = (TextView) itemView.findViewById(R.id.detTitleDepartCity);
            this.detTitleArriveCity = (TextView) itemView.findViewById(R.id.detTitleArriveCity);
            this.detTotalDuration = (TextView) itemView.findViewById(R.id.detTotalDuration);
 
            this.detDepartTime = (TextView) itemView.findViewById(R.id.detDepartTime);
            this.detDepartDate = (TextView) itemView.findViewById(R.id.detDepartDate);
            this.detArriveTime = (TextView) itemView.findViewById(R.id.detArriveTime);
            this.detArriveDate = (TextView) itemView.findViewById(R.id.detArriveDate);
            this.depDepartCity = (TextView) itemView.findViewById(R.id.depDepartCity);
            this.detDepartAirport = (TextView) itemView.findViewById(R.id.detDepartAirport);
            this.detArriveCity = (TextView) itemView.findViewById(R.id.detArriveCity);
            this.detArriveAirport = (TextView) itemView.findViewById(R.id.detArriveAirport);
            this.detFlight = (TextView) itemView.findViewById(R.id.detFlight);
 
            this.airlineLogo = (ImageView) itemView.findViewById(R.id.detAirportLogo);
        }
    }
 
    class DetailsItem extends RecyclerView.ViewHolder{
 
        TextView transferCity;
        TextView detTotalDuration;
 
        TextView detDepartTime;
        TextView detDepartDate;
        TextView detArriveTime;
        TextView detArriveDate;
        TextView depDepartCity;
        TextView detDepartAirport;
        TextView detArriveCity;
        TextView detArriveAirport;
        TextView detFlight;
 
        ImageView airlineLogo;
 
        public DetailsItem(View itemView) {
            super(itemView);
 
            this.transferCity = (TextView) itemView.findViewById(R.id.tvTransferCity);
            this.detTotalDuration = (TextView) itemView.findViewById(R.id.detTotalDuration);
 
            this.detDepartTime = (TextView) itemView.findViewById(R.id.detDepartTime);
            this.detDepartDate = (TextView) itemView.findViewById(R.id.detDepartDate);
            this.detArriveTime = (TextView) itemView.findViewById(R.id.detArriveTime);
            this.detArriveDate = (TextView) itemView.findViewById(R.id.detArriveDate);
            this.depDepartCity = (TextView) itemView.findViewById(R.id.depDepartCity);
            this.detDepartAirport = (TextView) itemView.findViewById(R.id.detDepartAirport);
            this.detArriveCity = (TextView) itemView.findViewById(R.id.detArriveCity);
            this.detArriveAirport = (TextView) itemView.findViewById(R.id.detArriveAirport);
            this.detFlight = (TextView) itemView.findViewById(R.id.detFlight);
 
            this.airlineLogo = (ImageView) itemView.findViewById(R.id.detAirportLogo);
        }
      }
    }
**Мой главный Активити:**
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    RecyclerView transferRecycler;
 
    private List<TicketObjects> transferList;
    private DetailsAdapter detailsAdapter;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ticket_details);
 
        transferRecycler = (RecyclerView) findViewById(R.id.transferRecycler);
        transferRecycler.setLayoutManager(new LinearLayoutManager(this));
 
        DetailsAdapter adapter = new DetailsAdapter(getApplicationContext(), getHeaderItem(), getDetailItem());
        transferRecycler.setAdapter(adapter);
    }
 
    public ArrayList<TicketObjects> getHeaderItem()
    {
 
        ArrayList<TicketObjects> headeritem = new ArrayList<>();
        headeritem.add(new TicketObjects("Москва", "Шереметьево", "Нью-йорк", "Джон кеннеди", "SFO","13:45","16.09.2015","JKD","13:45","16.09.2015","Анкара", "1ч 15мин","15000", R.drawable.logo_flyduba, "Рейс: 543"));
 
        return headeritem;
    }
 
    public  List<TicketObjects> getDetailItem()
    {
        ArrayList<TicketObjects> listItems = new ArrayList<>();
 
    //данные просто пример
 
        listItems.add(new TicketObjects("Москва", "Шереметьево", "Нью-йорк", "Джон кеннеди", "SFO","13:45","16.09.2015","JKD","13:45","16.09.2015","Almaty", "1ч 15мин","15000", R.drawable.logo_flyduba, "Рейс: 543"));
        listItems.add(new TicketObjects("Москва", "Шереметьево", "Нью-йорк", "Джон кеннеди", "SFO","13:45","16.09.2015","JKD","13:45","16.09.2015","Almaty", "1ч 15мин","15000", R.drawable.logo_flyduba, "Рейс: 543"));
        listItems.add(new TicketObjects("Москва", "Шереметьево", "Нью-йорк", "Джон кеннеди", "SFO","13:45","16.09.2015","JKD","13:45","16.09.2015","Almaty", "1ч 15мин","15000", R.drawable.logo_flyduba, "Рейс: 543"));
 
        return listItems;
    }
У меня просто белый экран, никаких ошибок. Да и мне кажется я просто все неправильно делаю. Подскажите пожалуйста, как сделать такой список?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2016, 15:53
Ответы с готовыми решениями:

Advanced RecyclerView и Expandable RecyclerView
Сделал expandable recycler view на основе advancedRecyclerView сборочки, но не важно это думаю,...

Отловить когда две вьюшки столкнутся
Здравствуйте. Подскажите как узнать что две вьюшки столкнулись между собой? Например при анимации,...

Название Вьюшки Календаря Для Собрания
Подскажите как называется представление записи Календаря для Собрания, которая отображается в окне...

Один ПК, две сетевухи, две сетки, две папки для общего доступа
Здравствуйте! В одном здании имеем две разделенные физически локальные сети. Есть возможность...

0
28.03.2016, 15:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2016, 15:53
Помогаю со студенческими работами здесь

RecyclerView внутри recyclerView
Добрый день. Хочу сделать список recyclerView c горизонтальной прокруткой, который отображает...

Как уменьшить количество layouts для RecyclerView
Здравствуйте уважаемые гуру, ситуация следующая: Делаю список на RecyclerView, нашел как можно...

Background resource для нескольких элементов в recyclerview.adapter
Наверно по теме не очень понятно что я имею ввиду, объясню на скрине public void...

Как сделать последний пустой элемент в RecyclerView для прокрутки
Доброго дня. Необходимо сделать сделать следующее поведение прокручиваемого списка. Описать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru