Ari*_*Roy 5 multithreading android cursor android-activity
是)我有的
我有一个自定义光标适配器,我运行一个线程来执行一些升沉任务.
我想要的是
我希望在完成线程后更新UI,就像显示Toast一样.
我的问题
因为我在自定义游标适配器中,我无法让Activity使用runAnUiThread方法,如getActivity().runOnUiThread().Custom Cursor Adapter类只是一个Java类,而不是Activity或Fragment.
如何从CustomCursorAdapter获取Activity引用并执行runOnUiThread方法?
您需要以某种方式将活动的引用传递给适配器.然后通过一些铸造或使用你可以调用的接口((YourActivity)context).runOnUiThread()
至于访问片段管理器,您需要进行相同的转换.
((YourActivity)context).getFragmentManager()
Run Code Online (Sandbox Code Playgroud)
但要注意!这不是一个好的设计模式.如果这context不是一项活动,你很快就会处理大量的NPE例外和事情.例如,ApplicationContext没有,getFragmentManager但是当您进行上面的转换时,您的IDE将不会通知您,当您在模拟器或设备上实际尝试时,您会发现它.
使用接口更安全,至少您知道您的活动具有实现的接口.
晚了,但可以帮助我,我知道我已经在这里回答了,但是它可以帮助其他人
如果U具有Adapter (RecyclerView Adapter,Viewpager Adapter... etc)并且在此适配器中,则您正在使用AsyncTask,并且您想使用AsyncTask来更改数据
((Activity)contextObject).runOnUiThread(new Runnable() {
@Override
public void run() {
//change View Data
}
});
Run Code Online (Sandbox Code Playgroud)
小智 5
((AppCompatActivity) context).runOnUiThread(new Runnable() {
@Override
public void run() {
//context.refreshInbox();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7387 次 |
| 最近记录: |