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

Загрузка данных на фрагмент

18.10.2017, 15:13. Показов 1744. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такой вопрос. В приложение поступают данные типа картинка и текст. Хочу сделать так что бы они загружались во фрагмент и заносились в cardview боксы. Но дело в том что я хочу что бы количество cardview боксов изменялось в соответстви с количеством пришедших данных(к примеру пришло 3 картинки - у меня 3 бокса, пришло 10 - 10 боксов).
Примерно как на картинке. Как такое реализовать подскажите.
https://ibb.co/dok0vm
PS: знаю как сдeлать такое с RecyclerView, но это получится список, а я хочу как на фото 2 бокса в ряд.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2017, 15:13
Ответы с готовыми решениями:

Вывод данных из бд в фрагмент
Здравствуйте У меня есть класс который наследуется от Fragment и класс для работы с готовой базой данных которою я подгружаю. Класс...

Вырезать фрагмент из wav файла и сохранить этот фрагмент в новый файл.
Добрый день, подскажите плиз как можно вырезать фрагмент из wav и сохранить его в новый wav файл?

Создать фрагмент базы данных
НУЖНО ОЧЕНЬ СРОЧНО ПОЛНЫЙ ЗАВАЛ :wall: Контрольная работа Даны отношения моделирующие какую либо предметную область. С...

8
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.10.2017, 15:30
это ресайклер, на который применили
Java
1
recyclerView.setLayoutManager(new GridLayoutManager(context, 2));
2
1 / 1 / 0
Регистрация: 29.09.2015
Сообщений: 37
19.10.2017, 10:34  [ТС]
Ок,а как сделать одинаковый отступ слева по середине и справа?
Если просто margin слева добавлять то справа получится без отступа, а если и справа отступ добавить то по середине слишком большой выходит)
Я так понмаю в xml это не сделать?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
19.10.2017, 12:05
Лучший ответ Сообщение было отмечено Gleb21 как решение

Решение

чисто для разминки
MainActivity
Кликните здесь для просмотра всего текста
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
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
 
        initRecycler();
    }
 
    private void initRecycler() {
        int defaultMargin = getResources().getDimensionPixelSize(R.dimen.default_item_margin); // отступ для карточек, в примере взят 4dp
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler);
        GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
        recyclerView.setLayoutManager(layoutManager);
        List<SomeModel> models = createFakeModelList();
        MyAdapter adapter = new MyAdapter(models);
        recyclerView.setAdapter(adapter);
        recyclerView.addItemDecoration(new SimpleMarginDecorator(defaultMargin, adapter));
    }
 
    // просто фейковый метод для генерации списка хавки
    private static List<SomeModel> createFakeModelList() {
        final List<SomeModel> models = new ArrayList<>();
        models.add(new SomeModel("Обеденное меню №6"));
        models.add(new SomeModel("Пиццы"));
        models.add(new SomeModel("Пиццы 32см классическая"));
        models.add(new SomeModel("Гранд-пицца 32см на пышном тесте"));
        models.add(new SomeModel("Пиццы 24см"));
        models.add(new SomeModel("Японская кухня / Japanese Cuisine"));
        models.add(new SomeModel("Булочки с каннабисом"));
        models.add(new SomeModel("Кокаиновая присыпка"));
        return models;
    }
}


адаптер и холдер, ничего интересного, можно пропускать и не смотреть
Кликните здесь для просмотра всего текста
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
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHolder> {
 
    private final List<SomeModel> list;
 
    public MyAdapter(List<SomeModel> list) {
        this.list = list;
    }
 
    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        final View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_item, parent, false);
        return new MyHolder(v);
    }
 
    @Override
    public void onBindViewHolder(MyHolder holder, int pos) {
        holder.nameTv.setText(list.get(pos).getName());
    }
 
    @Override
    public int getItemCount() {
        return list == null ? 0 : list.size();
    }
 
    static class MyHolder extends RecyclerView.ViewHolder {
 
        private final TextView nameTv;
 
        public MyHolder(View itemView) {
            super(itemView);
            nameTv = (TextView) itemView.findViewById(R.id.name_tv);
        }
    }
}


разметка для карточки адаптера
Кликните здесь для просмотра всего текста
XML
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
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardBackgroundColor="#3f3f3f"
    app:cardCornerRadius="6dp"
    app:cardUseCompatPadding="true"
    app:elevation="4dp">
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
 
        <ImageView
            android:id="@+id/photo_iv"
            android:layout_width="match_parent"
            android:layout_height="112dp"
            android:scaleType="center"
            android:src="@drawable/ic_some_food" />
 
        <TextView
            android:id="@+id/name_tv"
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:background="@color/colorPrimary"
            android:ellipsize="end"
            android:gravity="start|center_vertical"
            android:maxLines="2"
            android:paddingEnd="8dp"
            android:paddingStart="8dp"
            android:textAppearance="@style/TextAppearance.AppCompat.Body1"
            android:textColor="#dfffffff"
            tools:text="Food name" />
 
    </LinearLayout>
</android.support.v7.widget.CardView>


на всякий разметка активити, просто пример
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#f0f0f0">
 
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorPrimary"
        app:title="Title"
        app:titleTextColor="@android:color/white" />
 
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/toolbar"
        android:background="#5b5b5b" />
 
</RelativeLayout>


и самый цимес - простой декоратор, который привязываем к ресайклеру
Кликните здесь для просмотра всего текста
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
public class SimpleMarginDecorator extends RecyclerView.ItemDecoration {
    private int margin;
    private final MyAdapter adapter;
 
    public SimpleMarginDecorator(int margin, MyAdapter adapter) {
        this.margin = margin;
        this.adapter = adapter;
    }
 
    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        int pos = parent.getChildLayoutPosition(view);
        if (pos % 2 == 0) {             // отступы справа/слева для первой колонки
            outRect.left = margin;
            outRect.right = margin / 2;
        } else {                        // и для второй колонки
            outRect.left = margin / 2;
            outRect.right = margin;
        }
        if (pos == 0 || pos == 1) {     // отступы сверху/снизу для первого ряда
            outRect.top = margin;
            outRect.bottom = margin / 2;
        } else if (pos >= adapter.getItemCount() - 2) { // последнего ряда
            outRect.top = margin / 2;
            outRect.bottom = margin;
        } else {                        // и всех остальных рядов
            outRect.top = margin / 2;
            outRect.bottom = margin / 2;
        }
    }
}


PROFIT
1
1 / 1 / 0
Регистрация: 29.09.2015
Сообщений: 37
19.10.2017, 13:02  [ТС]
Вы спасли мой день)

Добавлено через 51 минуту
https://ibb.co/hmdP5m
что за странный отступ снизу в карточке?
Подключил ваш класс декоратора. Работает гуд,но всегда в предпоследней строке в карточке отступ непонятный
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
19.10.2017, 14:07
в моем коде с той разметкой что выше все работает нормально
что там с разметкой и адаптером на скриншоте выше - я х.з.
1
1 / 1 / 0
Регистрация: 29.09.2015
Сообщений: 37
19.10.2017, 17:08  [ТС]
Добавьте еще 3 записи в лист, я ваш адаптер уже использую и все равно

Добавлено через 6 минут
Забавно, начинается баг всегда с 9 карточки

Добавлено через 10 минут
else if (pos >= adapter.getItemCount() - 1) { // последнего ряда вот тут у вас ошибка была

Добавлено через 1 минуту
поменяв на -1 баг исчез

Добавлено через 24 минуты
хотя я так и не понял почему
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
19.10.2017, 17:38
я думаю там надо проверку добавить на четность количества итемов и менять -1 или -2
пусть это будет домашним заданием тем, кто будет брать этот код в будущем
1
1 / 1 / 0
Регистрация: 29.09.2015
Сообщений: 37
19.10.2017, 17:40  [ТС]
Логично, спасибо за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.10.2017, 17:40
Помогаю со студенческими работами здесь

Из потока данных стандарта DVB извлечь фрагмент пакета Mpeg-2 со звуком или изображением
Здравствуйте! Мне нужна программа написанная на MS Visual C++ которая из потока данных стандарта DVB извлекала бы фрагмент пакета Mpeg-2 со...

Загрузка Данных Из Терминала Сбора Данных В Требование-накладную Упп
В УПП 8.2 стандартно предусмотрена загрузка из терминала сбора данных в документ &quot;ПоступлениеТоваровИУслуг&quot;. По этому образцу...

Загрузка данных, построение графика, сохранение и очистка данных
здравствуйте, нужно написать программу, в которой будет построение графика, кнопки: загрузка данных, нарисовать график, сохранение данных и...

Загрузка данных из Excel в базу данных Access на VBA
Буду очень рад если кто-нибудь приведет более менее понятный код, как можно это реализовать средствами VBA

Загрузка данных через любой документ в базу данных
Здравствуйте, имеется любой документ (пусть хоть docx, txt, xls, xml, без разницы). Так вот, как реализовать отправку данных через...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru