Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
omuradil
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 77
#1

Две вьюшки для RecyclerView - Программирование Android

28.03.2016, 15:53. Просмотров 161. Ответов 0

У меня проблема в том, что нужно создать лист в котором 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2016, 15:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Две вьюшки для RecyclerView (Программирование Android):

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

RecyclerView внутри recyclerView - Программирование Android
Добрый день. Хочу сделать список recyclerView c горизонтальной прокруткой, который отображает допустим 20 элементов(card). Т.е....

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

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

Вьюшки на Google Map v2 - Программирование Android
Привет! Необходимо к гугл мапе прикрутить панель, поиска места по названию, просветите плиз, как правильно добавить компоненты на...

RecyclerView - Программирование Android
Скажите что делаю не так. Цель: выводить содержимое бд заголовок, текст и т.п. Как я делал, точнее по гайдам. Тут из базы передаю...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2016, 15:53
Привет! Вот еще темы с ответами:

RecyclerView Adapter - Программирование Android
Пример классического создания адаптера RecyclerView public class UserDialogRecyclerAdapter extends...

Recyclerview-stickyheaders - Программирование Android
Подскажите кто пожалуйста как сделать recyclerview-stickyheaders как в ссылке только с cardView. ...

Retrofit Recyclerview - Программирование Android
Здравствуйте, уважаемые форумчане. Помогите добавить onScroll в RecyclerView. Вот код public class MainActivity extends...

RecyclerView click - Программирование Android
Добрый ночи. ребята как при клики зафиксировать блок. recView.addOnItemTouchListener( new...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru