创建自定义图标,用于侦听API中的更改并对其进行更改';根据Android上的颜色

创建自定义图标,用于侦听API中的更改并对其进行更改';根据Android上的颜色,android,api,event-listener,uielement,Android,Api,Event Listener,Uielement,我试图实现一个自定义图标,它根据API响应改变颜色(绿色代表空闲,红色代表忙碌)。到目前为止,我从API得到了一个关于打印机状态是否空闲的响应,并创建了一个新方法来检查打印机是否空闲,如果是,则返回true,而不是false。我的问题是,我不知道自定义图标应该使用哪个事件处理程序来实现这个isIdle()方法,或者是否有其他方法可以解决这个问题 我有一个自定义的适配器类,我在其中显示打印机名称,它的型号,我需要显示它的状态,所有这些信息都来自API 下面是它应该是什么样子的图像 这里是我的适配器

我试图实现一个自定义图标,它根据API响应改变颜色(绿色代表空闲,红色代表忙碌)。到目前为止,我从API得到了一个关于打印机状态是否空闲的响应,并创建了一个新方法来检查打印机是否空闲,如果是,则返回true,而不是false。我的问题是,我不知道自定义图标应该使用哪个事件处理程序来实现这个isIdle()方法,或者是否有其他方法可以解决这个问题

我有一个自定义的适配器类,我在其中显示打印机名称,它的型号,我需要显示它的状态,所有这些信息都来自API

下面是它应该是什么样子的图像

这里是我的适配器类,以防它有所帮助

public class NsdServiceInfoAdapter extends ArrayAdapter<PrinterNew> {
private Context mContext;
private List<PrinterNew> services;
private InetAddress hostAddress;


layout id (list item layout Id) and data model.

public NsdServiceInfoAdapter(@NonNull Context context, int layoutId, 
List<PrinterNew> list) {
    super(context, layoutId, list);
    mContext = context;
    services = list;
}

@NonNull
@Override


public View getView(int position, @Nullable View convertView, @NonNull 
ViewGroup parent) {
    View listItem = convertView;


    if (listItem == null)
        listItem = 
LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false);

    PrinterNew currentService = services.get(position);



    TextView t = listItem.findViewById(R.id.TextView_serviceName);
    TextView r = listItem.findViewById(R.id.TextView_serviceIP);
    r.setText("model: " + currentService.getPrinterModel());
    t.setText("name: " + currentService.getPrinterName());


    Log.d("TAG", "model" + String.valueOf(currentService.getPrinterModel()));
    Log.d("hello2", String.valueOf(currentService.getPrinterName()));


    return listItem;
}

}

您具有状态的布尔值。只需使用ImageView设置一个圆形图标,并应用基于布尔值的颜色过滤器,如:ImageView.setColorFilter(color.RED);设置颜色过滤器(颜色为灰色);好的,我将尝试这样做,所以我假设我创建了一个新的方法,在这个方法中我检查布尔值是否为真和假,并在此基础上分配颜色过滤器。关于adapter,我需要在adapter类中调用这个新方法吗?
    public boolean isIdle() {
    if (state == -1 && currentMenu == 0) {
        return true;
    } else {
        return false;
    }
}