Android 如何在onPostExecute()中重画视图
我正在使用AsyncTask获取数据以填充我的listView。我正在Android 如何在onPostExecute()中重画视图,android,android-listview,android-asynctask,Android,Android Listview,Android Asynctask,我正在使用AsyncTask获取数据以填充我的listView。我正在onPostExecute()中更改listview的适配器 受保护的void onPostExecute(ArrayList结果){ MarkersListAdapter=(MarkersListAdapter)this.markersList.getAdapter(); 适配器。清除(); adapter.addAll(结果); this.markersList.setAdapter(适配器); 然后我想对新视图进行一些
onPostExecute()中更改listview的适配器
受保护的void onPostExecute(ArrayList结果){
MarkersListAdapter=(MarkersListAdapter)this.markersList.getAdapter();
适配器。清除();
adapter.addAll(结果);
this.markersList.setAdapter(适配器);
然后我想对新视图进行一些更改,但在程序从onPostExecute()
返回后,ListView会被新视图填充。我想强制android在onPostExecute()
中填充我的ListView。我已经尝试了notifyDatasetChanged()
适配器和invalidate()
用于listview,但没有起作用。我成功地修改了列表并使listview无效
listView.setAdapter(new MyListAdapter(getActivity(), R.layout.list_cell_layout, objList));
首先将适配器设置为listView
listView.setAdapter(new MyListAdapter(getActivity(), R.layout.list_cell_layout, objList));
每当需要刷新列表时,只需对objList进行更改,并调用invalidate以使列表视图无效,如下所示:
objList.remove(1);
listView.invalidateViews();
它对我有效。什么样的更改..为什么不发布您尝试过的内容..项目图形中的更改取决于一些其他数据。我认为此代码与案例无关。我使用getChildAt(I)
检索视图。实际上,它对我无效。什么都没有发生。getChildAt(I)
返回null。在onPostExecute()结束后,只需执行几个调试器步骤,视图就会显示。
在创建ListAdapter时是否添加了非null列表?否。我这样初始化它:ArrayList结果=new ArrayList();MarkersListAdapter=new MarkersListAdapter(getActivity(),R.layout.cito_select_markers_row,result);markersList.setAdapter(adapter);
Ok,执行数组列表objList全局。在onPostExecute中,执行objList.addAll(result);markersList.invalidateViews();