可以使用两个ArrayLists用自定义布局填充一个微调器吗?

时间:2012-01-29 18:37:05

标签: android android-layout android-widget

首先说明为什么我问这个问题......

我正在为一家机械车间开设一个调度应用程序。我有一个包含机器,工作和员工表的数据库。可能并非所有这些机器都有作业或操作员,所以我需要一种方法来向旋转器添加“无”(有几个原因我不会将其添加到数据库本身)。为了实现这一点,我决定从数据库中获取一个游标并迭代它,将我需要的那些位加载到一个ArrayList中并在末尾添加一个“None”元素。

这很好用,但现在我遇到了一个我似乎无法弄清楚的问题。

Job表有两列(不包括索引):作业号和部件号。我创建了一个自定义布局将它们放在一起,然后在微调器中使用它(所以你会在微调器的每一行上看到Job# - Part#)。从光标填充它很简单。试图将其转换为两个数组让我感到难过。

我可以将光标中的数据放入两个数组中,没有任何问题,但我无法弄清楚如何将它们与布局中包含的布局ID相关联。

我是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 个答案:

答案 0 :(得分:1)

我认为您需要的是为您的微调器定制适配器。

您需要扩展BaseAdapter

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

然后覆盖getView方法。

快速谷歌出现了这个教程:

http://app-solut.com/blog/2011/03/using-custom-layouts-for-spinner-or-listview-entries-in-android/