Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Android中正在更新的文本视图中替换颜色?_Android_Colors_Textview - Fatal编程技术网

如何从Android中正在更新的文本视图中替换颜色?

如何从Android中正在更新的文本视图中替换颜色?,android,colors,textview,Android,Colors,Textview,我已经在Android上开发了一个应用程序,能够检测蓝牙信号并在列表视图中显示。它显示名称、地址和rssi值。对于最后一个参数,我已经这样做了,以便不断更新。问题是,我希望rssi的值在更新其值时在2种不同颜色或更多颜色之间交替;例如,黑色的值为-83dBm,红色的更新值为-81dBm。我尝试过一种方法,但当它运行时,由于尝试更改颜色,它没有显示任何值。以下是我使用的代码: 新:代码编辑 public class BleDevicesAdapter extends BaseAdapter { p

我已经在Android上开发了一个应用程序,能够检测蓝牙信号并在列表视图中显示。它显示名称、地址和rssi值。对于最后一个参数,我已经这样做了,以便不断更新。问题是,我希望rssi的值在更新其值时在2种不同颜色或更多颜色之间交替;例如,黑色的值为-83dBm,红色的更新值为-81dBm。我尝试过一种方法,但当它运行时,由于尝试更改颜色,它没有显示任何值。以下是我使用的代码:

新:代码编辑

public class BleDevicesAdapter extends BaseAdapter {
private final LayoutInflater inflater;

private final ArrayList<BluetoothDevice> leDevices;
private final HashMap<BluetoothDevice, Integer> rssiMap = new HashMap<BluetoothDevice, Integer>();

public BleDevicesAdapter(Context context) {
    leDevices = new ArrayList<BluetoothDevice>();
    inflater = LayoutInflater.from(context);
}

public void addDevice(BluetoothDevice device, int rssi) {
    if (!leDevices.contains(device)) {
        leDevices.add(device);
    }
    rssiMap.put(device, rssi);
}

public BluetoothDevice getDevice(int position) {
    return leDevices.get(position);
}

public void clear() {
    leDevices.clear();
}

public Integer getRSSI(int j){
    BluetoothDevice device = leDevices.get(j);
    return rssiMap.get(device);
}

@Override
public int getCount() {
    return leDevices.size();
}

@Override
public Object getItem(int i) {
    return leDevices.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    ViewHolder viewHolder;
    // General ListView optimization code.
    if (view == null) {
        view = inflater.inflate(R.layout.listitem_device, null);
        viewHolder = new ViewHolder();
        viewHolder.deviceAddress = (TextView) view.findViewById(R.id.device_address);
        viewHolder.deviceName = (TextView) view.findViewById(R.id.device_name);
        viewHolder.deviceRssi = (TextView) view.findViewById(R.id.device_rssi);
        view.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) view.getTag();
    }

    BluetoothDevice device = leDevices.get(i);
    final String deviceName = device.getName();
    if (deviceName != null && deviceName.length() > 0)
        viewHolder.deviceName.setText(deviceName);
    else
        viewHolder.deviceName.setText(R.string.unknown_device);
        viewHolder.deviceAddress.setText(device.getAddress());

        if(viewHolder.deviceRssi.getCurrentTextColor()==0x000000){
        viewHolder.deviceRssi.setTextColor(0xFF0000);
        viewHolder.deviceRssi.setText(""+rssiMap.get(device)+" dBm");

        }
        else {
                    viewHolder.deviceRssi.setTextColor(0x000000);
            viewHolder.deviceRssi.setText(""+rssiMap.get(device)+" dBm");

        }

    return view;
}

private static class ViewHolder {
    TextView deviceName;
    TextView deviceAddress;
    TextView deviceRssi;
}
公共类BleDeviceAdapter扩展了BaseAdapter{
私人充气机;
私人最终ArrayList leDevices;
private final HashMap rssiMap=new HashMap();
公共BleDeviceAdapter(上下文){
leDevices=newArrayList();
充气器=充气器。从(上下文);
}
公共设备(蓝牙设备,int rssi){
如果(!leDevices.contains(设备)){
添加(设备);
}
rssiMap.put(设备,rssi);
}
公共蓝牙设备getDevice(内部位置){
返回LED设备。获取(位置);
}
公共空间清除(){
leDevices.clear();
}
公共整数getRSSI(int j){
BluetoothDevice=leDevices.get(j);
返回rssiMap.get(设备);
}
@凌驾
public int getCount(){
返回leDevices.size();
}
@凌驾
公共对象getItem(int i){
返回leDevices.get(i);
}
@凌驾
公共长getItemId(int i){
返回i;
}
@凌驾
公共视图getView(int i、视图视图、视图组视图组){
持票人持票人;
//通用ListView优化代码。
如果(视图==null){
视图=充气机。充气(R.layout.listitem\u设备,空);
viewHolder=新的viewHolder();
viewHolder.deviceAddress=(TextView)view.findViewById(R.id.device\u地址);
viewHolder.deviceName=(TextView)view.findViewById(R.id.device\u name);
viewHolder.deviceRssi=(TextView)view.findViewById(R.id.device\u rssi);
view.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)view.getTag();
}
BluetoothDevice=leDevices.get(i);
最后一个字符串deviceName=device.getName();
如果(deviceName!=null&&deviceName.length()>0)
viewHolder.deviceName.setText(deviceName);
其他的
viewHolder.deviceName.setText(R.string.unknown_设备);
viewHolder.deviceAddress.setText(device.getAddress());
if(viewHolder.deviceRssi.getCurrentTextColor()=0x000000){
viewHolder.deviceRssi.setTextColor(0xFF0000);
viewHolder.deviceRssi.setText(“+rssiMap.get(device)+”dBm”);
}
否则{
viewHolder.deviceRssi.setTextColor(0x000000);
viewHolder.deviceRssi.setText(“+rssiMap.get(device)+”dBm”);
}
返回视图;
}
私有静态类视图持有者{
TextView设备名称;
TextView设备地址;
文本视图设备;
}
有人知道如何解决这个问题吗?请帮忙!!

这很简单

适配器内

if(value > yourdesiredmax) TextView.setTextColor(Color.RED);
else TextView.setTextColor(Color.BLACK);

使用if statemens时,在
列表视图
适配器中,还必须提供else语句的相反状态通知。因此,原因是
列表视图
恢复其
视图
,事情可能会搞砸。

嗨。我已经编辑了代码abov然后把整个适配器的代码放在哪里?我应该把你放的代码放在哪里?value和yourdiremax是什么意思?这就是你的文本应该变成红色的条件。你可以把任何你想要的作为你的条件