Spinner 的整数 ArrayAdapter 有效:使用我的简单对象 "hangs"

Spinner's ArrayAdapter of Integers works: with my simple Object it "hangs"

如果我向 Spinner 传递一个简单的整数数组,它就可以正常工作。 但我想对值 0(零)做个例外。

        /*
         * Pass the spinner the adapter with all possible start numbers.
         */
        List<RiderStatus> RiderStatuses = DataModel.get().getRiderStatuses();

        List<Integer> tempInts = new ArrayList<Integer>(
                RiderStatuses.size() + 1);


        for (int i = 0; i < RiderStatuses.size(); i++) {
            if (i == 0 || (RiderStatuses.get(i).getStarted()
                    && !RiderStatuses.get(i).getFinished()))
                tempInts.add(new Integer(RiderStatuses.get(i).getRiderNum()));
        }

        ArrayAdapter<Integer> spinnerAdapter = new ArrayAdapter<Integer>(
                mCallercontext, R.layout.big_spinner, tempInts);

        /*
         * Notify observers
         */
        spinnerAdapter.notifyDataSetChanged();

        viewHolder.spinnerStartNo = (Spinner) convertView.findViewById(R.id.spinnerStartNo);
        viewHolder.spinnerStartNo.setAdapter(spinnerAdapter);

我的对象只是一个整数,其中 toString 返回零大小写的文本。在上面的代码中,我基本上用我的 RiderNo 替换了 Integer。 当我点击微调器时,屏幕变暗并且按钮变得无响应或响应缓慢。

这是我的对象的代码。

/**
 * Class RiderNo
 * Holds an Integer, but implements toString so that an exception
 * can be made of rider 0 - the "Bandit" or unknown.
 * Use instead of Integer in tempInts.  Did not work!
 */
private class RiderNo  {
    private Integer mRiderNo;

    RiderNo(int riderNo) {
        mRiderNo = riderNo;
    }

    public String toString() {
        if( mRiderNo == 0 )
            return "Bandit";
        else
            return String.format("%d", mRiderNo);
    }

    public int getRiderNo() {
        return mRiderNo;
    }

    public void setRiderNo(int riderNo ) {
        mRiderNo = riderNo;
    }

}

全面披露:周边代码相当复杂。我有一个由队列 (FIFO) 驱动的列表视图。列表视图有两列:捕获的时间和带有数字列表(变化的子集)的相关微调器。

我现在有更多信息:

这是在日志中

01-25 13:59:50.958 32029-32029/ca.owensoundcyling.tttimer W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.

而且已经有一个问题了 Attempted to finish an input event but input event receiver has already been disposed

有两个问题,至少我做了两处更改,它逐渐变得更好了。修复第一个问题后,我的代码中出现了真正的异常。但这可能一直是个问题 - 只是从来没有走到那一步。

  1. RiderNo class 需要 public。我假设 Android 框架需要在我的 Fragment 之外访问它?
  2. 我必须将微调器位置的项目转换为我的 class 的对象,并使用其访问器获取整数。 (很明显。)