Как сопоставить список списков с RecyclerViewAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как сопоставить список списков с RecyclerView

Сообщение Anonymous »

Я пытаюсь сопоставить List с RecyclerView в Android, но результат полностью испорчен.

Например, у меня есть список такой список (просто для пояснения, а не для моего реального случая):

Код: Выделить всё

List list = {{a, b, c}, {d, e}, {f, g, h, i}};
Recyclerview должно выглядеть следующим образом (первая строка содержит три подстроки, вторая — две, а последняя — четыре):

Код: Выделить всё

|----a-----|
|----b-----|
|----c-----|
|=======|
|----d-----|
|----e-----|
|=======|
|----f-----|
|----g-----|
|----h-----|
|----i-----|
но результат не совсем такой, как в приведенном выше порядке. какой-то элемент дублируется, а какой-то исчезает. например:

Код: Выделить всё

|----d-----|
|----e-----|
|----c-----|
|=======|
|----d-----|
|----e-----|
|=======|
|----f-----|
|----a-----|
Вот фрагмент моего кода:

Код: Выделить всё

    @Override
public void onBindViewHolder(ViewHolder holder, int position) {
List list = eventList.get(position);
if (holder.rows < list.size()) {
holder.rowViewGroup.removeAllViews();
holder.rows = 0;
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
TextView startView = new TextView(context);
startView.setLayoutParams(layoutParams);
Event headEvent = list.get(0);
Calendar startCal = headEvent.getStartCal();
startView.setText(String.format("%tD", startCal));
holder.rowViewGroup.addView(startView);

for (final Event event : list) {
View element = LayoutInflater.from(context).inflate(R.layout.element, null);
//start time view
TextView startTimeView = (TextView)element.findViewById(R.id.eventStartTimeInElement);
Calendar startTimeCal = event.getStartCal();
startTimeView.setText(String.format("%tl:%tM %tp", startTimeCal, startTimeCal, startTimeCal));
//end date time view
TextView endView = (TextView)element.findViewById(R.id.eventEndTimeInElement);
Calendar endCal = event.getEndCal();
endView.setText(String.format("%tD  %tl:%tM %tp", endCal, endCal, endCal, endCal));
//title view
TextView title = (TextView)element.findViewById(R.id.eventTitleInElement);
title.setText(event.getTitle());
//member name

Drawable divider = context.getResources().getDrawable(R.drawable.divider);
ImageView dividerView = new ImageView(context);
dividerView.setImageDrawable(divider);
holder.rowViewGroup.addView(dividerView);
holder.rowViewGroup.addView(element);
holder.rows++;
}
}
}
Вот мой файл row.xml:
и element.xml(который содержится в row.xml):
И я знаю, что это не очень хорошая идея для реализации, поэтому может ли кто-нибудь подсказать мне лучший способ реализовать это? Спасибо...

Подробнее здесь: https://stackoverflow.com/questions/296 ... cyclerview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»