异步调用后修改导航片段



我有一个Aync任务

public class XmlNetwork extends AsyncTask< String, Void, List<PEMenuItem>

它本质上是将一个xml文件加载到一些对象中,我想用这些对象来更改我的导航抽屉菜单项。它有一个超控功能

protected void onPostExecute(List<PEMenuItem> result)

所以现在的结果是我从xml加载的3个对象的列表。

此时,我想在我的班级内打个电话

public class NavigationDrawerFragment extends Fragment

要构建菜单,请添加onclicklisteners等

我之前已经学会了如何添加一些回调,从片段调用到我的主活动,但我将如何进行相反的操作,从我的Async类调用到片段?我想把清单和它一起寄,一些类似的东西

    @Override
    protected void onPostExecute(List<PEMenuItem> result) {
        NavigationDrawerFragment fragment = (NavigationDrawerFragment) getFragment().modifyMenu(result);
    }
NavigationDrawerFragment中的菜单项通常只是ListView中的项目。因此,它们由适配器支持。将新项目设置为该适配器的内容,并在适配器上调用notifyOnDatasetChanged。这将导致列表从该适配器重新获取项目。例如,你可以使用这样的东西作为菜单列表的适配器(简化):
public class MenuItemsAdapter extends BaseAdapter {
    private List<String> menuItems;
    public MenuItemsAdapter(Context context) {       
        this.context = context;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        //Empty for now
        menuItems = new ArrayList<>();
    }
    public void setNewMenuItems(List<String> newMenuItems) {
        this.menuItems = newMenuItems;
        notifyDataSetChanged();
    }
    @Override
    public int getCount() {
        return menuItems.size();
    }
    @Override
    public String getItem(int i) {
        return menuItems.get(i);
    }
    @Override
    public long getItemId(int i) {
        return i;
    }
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        if(view == null) {
            view = inflater.inflate(R.layout.your_menu_item_layout, viewGroup, false);
        }
        TextView menuItemText = view.findViewByIt(R.id.your_menu_item_text);
        menuItemText = menuItems.get(position);
        return view;
    }
}

最新更新