Курсор Массив в ListView, но несколько столбцов - PullRequest
0 голосов
/ 19 февраля 2020

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

public void insertData() {
    ListView listView = (ListView) findViewById(R.id.listWorkouts1);
    ListView listView2 = (ListView) findViewById(R.id.listWorkouts2);
    ListView listView3 = (ListView) findViewById(R.id.listWorkouts3);
    SQLiteController db = new SQLiteController(this);
    String username = ma.id;
    //populate an ArrayList<String> from the database and then view it
    ArrayList<String> theList1 = new ArrayList<>();
    ArrayList<String> theList2 = new ArrayList<>();
    ArrayList<String> theList3 = new ArrayList<>();
    ArrayList<String> finalList = new ArrayList<>();
    Cursor data = db.getUserListContents(username);

    if (data.getCount() == 0) {
        Toast.makeText(this, "There are no contents in this list!", Toast.LENGTH_LONG).show();
    } else {
        while (data.moveToNext()) {
            theList1.add(data.getString(0));
            theList2.add(data.getString(1));
            theList3.add(data.getString(2));

            ListAdapter listAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, theList1);
            listView.setAdapter(listAdapter);

            ListAdapter listAdapter2 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, theList2);
            listView2.setAdapter(listAdapter2);

            ListAdapter listAdapter3 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, theList3);
            listView3.setAdapter(listAdapter3);
        }
    }
}

enter image description here

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

Как я могу использовать только один listView, но разделить данные, которые будут отображаться в отдельных столбцах?

По умолчанию в нем перечислены все данные под предыдущим значением.

Каждый При выполнении l oop я хочу, чтобы данные отображались в одной строке, а не одна под другой.

Любая помощь приветствуется.

1 Ответ

1 голос
/ 19 февраля 2020

Вы можете использовать RecyclerView с GridLayoutManager в вашем случае. Вот пример реализации basi c . Вы также можете посмотреть этот учебник .

Вместо отдельных списков, вы можете создать объект и передать список этого объекта в свой адаптер, чтобы загрузить элементы оттуда. Например, рассмотрим следующий класс.

public class Workout {
    public String name;
    public String date;
    public String weight;
}

Теперь при чтении значений из cursor создайте объект класса Workout и создайте List<Workout>, а затем измените свой адаптер для передачи этого списка.

Я надеюсь, что смогу дать вам идею реализовать это изящно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...