class MHandler extends Handler { public void dispatchMessage(Message msg) { super.dispatchMessage(msg); switch (msg.what) { case MSG_GOODS_OK: if (msg.obj != null) { String vlResult = (String) msg.obj; //解析获取的json数据 List<GoodsInfo> goodsInfos = getGoodsList(vlResult); adapter.setData(goodsInfos); } break;; } }
时间: 2024-02-10 12:18:46 浏览: 31
这段代码是什么意思?
这段代码是一个 Android Handler 类的子类 MHandler,重写了 dispatchMessage() 方法。在这个方法中,首先通过 super.dispatchMessage(msg) 调用父类的 dispatchMessage() 方法,然后根据传入的 Message 对象的 msg.what 属性值来进行不同的操作。当 msg.what 值为 MSG_GOODS_OK 时,如果 msg.obj 不为空,则将其转换为 String 类型的数据 vlResult,然后调用 getGoodsList() 方法解析 vlResult 中的 JSON 数据,将解析后的结果赋值给 adapter.setData() 方法,从而更新列表中的数据。
相关问题
错误: MainActivity.MHandler不是抽象的, 并且未覆盖MainActivity.MHandler中的抽象方法sendMessage(Message) class MHandler extends Handler {
这个错误的原因是你定义了一个继承自抽象类 Handler 的 MHandler 类,但是你没有实现 Handler 中的抽象方法 sendMessage(Message)。因为 Handler 是一个抽象类,所以你必须实现它的所有抽象方法才能创建一个有效的子类。
要解决这个错误,你需要在 MHandler 类中实现 sendMessage(Message) 方法。例如:
```
class MHandler extends Handler {
@Override
public void handleMessage(Message msg) {
// 处理消息
}
@Override
public void sendMessage(Message msg) {
// 发送消息
}
}
```
在这个例子中,我们覆盖了 Handler 中的 handleMessage() 方法来处理收到的消息,同时也实现了 sendMessage() 方法来发送消息。这样就可以避免上述错误。
代码解释 private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); Bundle bundle; switch (msg.what){ case msgKey1: bundle =msg.getData(); textView.setText(bundle.getString(pingRes)); break; default: break; } } };
这段代码定义了一个私有的Handler类,并重写了它的handleMessage方法。在该方法中,根据msg传递过来的what值进行了不同的操作,当what等于msgKey1时,将msg中的数据通过Bundle获取并设置到textView中,否则不进行任何操作。