-2

我试图在我的列表视图中只显示传感器的名称。在日志中我可以做到,但在我的列表视图中不能:

 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);

    for(Sensor s : deviceSensors) {
        Log.d("SENSORS", s.getName());
        listView.setAdapter(new ArrayAdapter<Sensor>(this,
                R.layout.customlistview, deviceSensors);
    }

通过这种方式,我可以在日志中显示名称,我在列表视图中会出现有关传感器的所有信息,而不仅仅是名称。如果我以这种方式尝试:

 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);

    for(Sensor s : deviceSensors) {
        Log.d("SENSORS", s.getName());
        listView.setAdapter(new ArrayAdapter<Sensor>(this,
                R.layout.customlistview, s.getName()));
    }

它让我在列表视图中出错:我The constructor ArrayAdapter<Sensor>(SensorsActivity, int, String) is undefined该如何解决?

4

1 回答 1

1

该日志有效,因为您正在打印其中每个传感器的名称。适配器只是工作方式不同。您需要一个Adapter用于整个列表视图。然后,当您想显示不止一个文本时,例如传感器名称和供应商,您还必须覆盖getView()适配器中的方法。在那里,您可以处理列表视图中一行的所有设置。

让我们从在列表视图的每一行中仅使用传感器名称的简单方法开始:

mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.customlistview));
listView.setAdapter(adapter);

for(Sensor s : deviceSensors) {
    Log.d("SENSORS", s.getName());
    adapter.add(s.getName());
}

R.layout.customlistview必须包含一个TextView用于显示给定字符串(传感器名称)的单个。

于 2013-10-25T18:10:24.940 回答