BmobQuery查询到的数据如何传值给全局变量?

公子彦 发布于 2016/04/13 09:34
阅读 1K+
收藏 0
  1. 需求:我想要通过把BmobQuery查询得到的数据传给集合mItems,然后可以通过mItems给ListView添加数据源,点击时获取到对应Item的id等等。
  2. 问题描述:BmobQuery查询成功了,可是只能在OnSuccess方法里面去写,我在网上查询的结果是说Bmob属于异步加载加载数据,所以我使用mItems的时候还没得到回调的值。那要怎么解决这个问题呢?我这边有一种解决办法,但是这样只能把得到的数据显示到ListView上。在方法外面使用mItems依然失败,这样我实现点击事件的时候没法定位的。
  3. 代码如下
private void getData(){
        BmobQuery<Task> taskData = new BmobQuery<>();
        //查询状态为0,即未接单的数据
        taskData.addWhereContains("status","0");
        taskData.findObjects(getActivity(), new FindListener<Task>() {
            @Override
            public void onSuccess(final List<Task> list) {
                Toast.makeText(getActivity(), "成功获取到:" + list.size()+"条数据!", Toast.LENGTH_SHORT).show();
//                mItems.addAll(list);
                getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        mItems.addAll(list);
                        mAdapter = new HostAdapter(getActivity(),mItems);
                        mListView.setAdapter(mAdapter);
                    }
                });

}

然后在下面测试:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        hostView = inflater.inflate(R.layout.fragment_host,container,false);
        Bmob.initialize(getActivity(), "XXXXXXXXXXXXXXXXXXXXX");
        initView();
        initEvent();

        getData();
        Toast.makeText(getActivity(),mItems.size(),Toast.LENGTH_LONG).show();

        return hostView;
    }

如果没有上面这个Toast是可以把加载到的数据显示到ListView上的,但是一加入这个Toast就会运行崩溃,报错如下:


麻烦大家帮忙看一下,有没有什么好的解决方案,谢谢!



加载中
0
小又鸟
小又鸟
你给mItems.size()+"",
公子彦
公子彦
恩恩,那个地方是临时加上去的,纯属笔误。不过我想要的效果已经实现了。谢谢了
返回顶部
顶部