![](/img/trans.png)
[英]Does Spring-MVC annotation based bean validation support for collection-based property ? (Spring-MVC)
[英]Updating collection-based Widget RemoteViews after AsyncTask callback
我處於一種情況,即小部件的ListView的元素依賴於通過AsyncTask通過網絡獲取的內容。 我的RemoteViewsFactory實現中的getViewAt代碼如下:
val preRendered = RemoteViews(context.packageName, R.layout.list_item_layout)
MyAsyncTask(preRendered).execute()
return preRendered
並且AsyncTask被定義為一個內部類
private inner class MyAsyncTask(val remoteViews: RemoteViews) : AsyncTask<Void, Void, Bitmap>()
{
override fun doInBackground(vararg nothing: Void): Bitmap = <fetch image from internet synchronously>
override fun onPostExecute(result: Bitmap) = remoteViews.setImageViewBitmap(R.id.imageview, result)
}
我的基本思路是,我應該將某些默認布局呈現給RemoteView,然后將其返回到列表中,然后允許網絡操作在后台進行。 然后,我在RemoteViews的同一實例上對AsyncTask的onPostExecute方法進行修改,我認為從理論上講,這應該導致實際的list元素被更新。 但是,盡管運行了onPostExecute並使用其初始布局填充了視圖,但從未設置圖像。 是否有人對如何實現這一目標有任何想法?
事后思考:我嘗試過僅使用TextView並在AsyncTask中設置一些靜態文本,但這也不起作用。
考慮使用ListView
和ArrayAdapter
。 這里是有關該主題的一個很好的教程的鏈接。
這個想法是讓您的后台任務更新支持數據,而不是直接查看。 支持數據是項目的集合,代表列表中每個項目的數據。 您的AsyncTask
會執行此操作並更新集合中的項目。 然后它將在ArrayAdapter
上調用notifyDataSetChanged()
使其更新ListView
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.