Spinner的ArrayAdapter of Integers工作原理:用我简单的Object“挂起”

时间:2016-01-24 16:46:35

标签: android android-arrayadapter android-spinner

如果我通过我的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);

My Object只是一个整数,其中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)驱动的列表视图。列表视图有两列:捕获的时间和有问题的Spinner以及数字的列表(更改子集)。

我现在有更多信息:

这是在日志中

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

答案 0 :(得分:0)

有两个问题,至少我进行了两次更改,并且逐渐变得更好。修复第一个后,我的代码中出现了一个真正的异常。但这可能总是一个问题 - 从来没有那么远。

  1. RiderNo类需要公开。我假设Android框架需要在我的片段之外访问它吗?
  2. 我必须将spinner位置的项目转换为我的类的对象并使用其访问器来获取Integer。 (很明显。)