Можно ли использовать два ArrayList для заполнения одного счетчика с пользовательским макетом? - PullRequest
1 голос
/ 29 января 2012

Сначала небольшая предыстория о том, почему я задаю этот вопрос ...

Я работаю над приложением по планированию для механического цеха.У меня есть база данных с таблицами для машин, рабочих мест и сотрудников.Вполне возможно, что не на всех этих машинах будут задания или операторы, поэтому мне нужен был способ добавить «Нет» в счетчики (есть несколько причин, по которым я не стану добавлять это в саму базу данных).Чтобы добиться этого, я остановился на получении курсора из базы данных и итерации по нему, загрузке нужных мне бит в ArrayList и добавлении элемента «None» в конце.

Это работает просто отлично, но теперь яЯ наткнулся на точку отсчёта, которую я не могу понять.

Таблица заданий имеет два столбца (не считая индекса): номер задания и номер детали.Я создал пользовательский макет, чтобы соединить их, а затем использовать его в счетчике (чтобы вы могли видеть № задания - Номер детали в каждой строке счетчика).Заполнить это из курсора было просто.Попытка преобразовать это в два массива поставила меня в тупик.

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

Я новичок в Android и давно обучался на Java, поэтому, если я пропустил что-то очевидное, укажите это!

listlayoutdouble.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/ListItem1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="?android:attr/listPreferredItemHeight"
        android:paddingLeft="12dip"
        android:gravity="left|center_vertical"
        android:layout_weight="1"       
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/ListItem2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="?android:attr/listPreferredItemHeight"
        android:paddingRight="12dip"
        android:gravity="right|center_vertical"
        android:layout_weight="1"
        android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>

Что у меня так далеко:

private void fillJobSpinner() {
        Cursor jobsCursor = mDBHelper.fetchAllJobs();
        startManagingCursor(jobsCursor);

        ArrayList<String> jobnumbers = new ArrayList<String>();
        ArrayList<String> jobnparts = new ArrayList<String>();
        if (jobsCursor != null) {
            operatorsCursor.moveToFirst();
            while (operatorsCursor.isAfterLast() == false) {
                jobnumbers.add(jobsCursor.getString(jobsCursor
                        .getColumnIndex(ScheduleDBAdapter.JOB_NUMBER))); 
                jobnparts.add(jobsCursor.getString(jobsCursor
                        .getColumnIndex(ScheduleDBAdapter.JOB_PART))); 
                jobsCursor.moveToNext();
            }
            jobnumbers.add("None");
            jobparts.add("None");
        }
}

1 Ответ

1 голос
/ 30 января 2012

Я думаю, что вам нужен специальный адаптер для вашего счетчика.

Вам необходимо расширить BaseAdapter

http://developer.android.com/reference/android/widget/BaseAdapter.html

Затем переопределить метод getView.

Быстрый Google нашел этот урок:

http://app -solut.com / blog / 2011/03 / using-custom-layouts-for-spinner-or-listview-records-в-андроида /

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