LinkedList具有两种尺寸



我正在尝试从加速度计添加到链接列表值。

private LinkedList<Float> rawValues = new LinkedList<Float>();
public void onSensorChanged(SensorEvent event)
{
    int eventType = event.sensor.getType();
    switch(eventType)
    {
        case Sensor.TYPE_ACCELEROMETER:
            float accelerometer_z = event.values[2];

                     rawValues.add(accelerometer_z);
                     /**
                      * This printout gives me positions and event values
                      */
                     System.out.println("getAccelerometer size: " +                 
                     rawValues.size() + " entry: " + rawValues.getLast());
            break;
    }
}

到目前为止,我可以按预期获得读数和数字位置。但是,当我试图用其他方法与列表一起做事时,它似乎是空的!

public String[] getVelocity()
{
    String[] velocityString = {"42","42"};
    String values = "";
    String theInteger = "";
    /**
     * Returns a 0 size...
     */
    int theSize = rawValues.size();
    System.out.println("getVelocity size: " + theSize);
    LinkedList<Float> slopeValues = calculateSlopeValues( rawValues);
    for (int i = 0; i < theSize; i++)
    {
        values += "Raw:"+i+ " " + String.valueOf(rawValues.get(i)) + "n";
        values += "tSlope:"+i+ " " + String.valueOf(slopeValues.get(i)) + "n";
    }
    theInteger = String.valueOf(Math.round(Collections.max(slopeValues)*100));
    /**
     * After adding everything to local variables, the list is cleared.
     */
    slopeValues.clear();
    velocityString[0] = theInteger;
    velocityString[1] = values;

    return velocityString;
}

从主要活动中的onTouch调用了获取方法。请亮了一些灯?

问候/m

覆盖方法:

@Override
public boolean onTouch(View view, MotionEvent event)
{
    MySensorEventListener eventListener = new MySensorEventListener();
    switch(event.getAction())
    {
        case MotionEvent.ACTION_DOWN:
            String[] strings = eventListener.getVelocity();
            String velocity_int = strings[0];
            String velocity_string = strings[1];

            velocityView.setText(velocity_int);
            listView.setText(velocity_string);

            break;
    }
    return false;
}

好吧,每次调用onTouch()时,您都会创建一个新的MySensorEventListener实例,并要求此新实例的速度。由于每个MySensorEventListener实例都有自己的原始值列表,因此您每次都会收到一个空列表。

听众可能只能创建一次,并存储在封闭类的实例字段中。

最新更新