Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么在本例中ArrayAdapter始终为空?_Android_Multithreading_Android Arrayadapter_Android Listfragment - Fatal编程技术网

Android 为什么在本例中ArrayAdapter始终为空?

Android 为什么在本例中ArrayAdapter始终为空?,android,multithreading,android-arrayadapter,android-listfragment,Android,Multithreading,Android Arrayadapter,Android Listfragment,我的代码结构如下: public class MyListFragment extends ListFragment { private ArrayList<User> users; private void initAdapter() { if(users == null) return; //getUserStatus(users); <———HERE 1 UsersAdapter adapter = new

我的代码结构如下:

public class MyListFragment extends ListFragment {
    private ArrayList<User> users;

    private void initAdapter() {
        if(users == null) return;
        //getUserStatus(users); <———HERE 1
        UsersAdapter adapter = new UsersAdapter(users);
        setListAdapter(users);
        getUserStatus(users);   // vs <—— HERE 2
    }  

    private void getUserStatus(List<User> users) {
        final UsersAdapter  adapter = (UsersAdapter )getListAdapter();
                 for(User user:users) {
            Thread t = new Thread(new Runnable() {
                //code to fetch some data
                if ( adapter == null) Log.e(“App”, “Adapter is NULL!”);
            });
            t.start();
        }
    }

    private UsersAdapter extends ArrayAdapter<User> {
        public UsersAdapter(List<User> users) {
            super(getActivity(), 0, users);
        }

        @Override
                public View getView(int position, View convertView, ViewGroup parent) {
            //code to inflate and populate list item
        }       
    }   
公共类MyListFragment扩展ListFragment{
私有ArrayList用户;
私有void initAdapter(){
if(users==null)返回;

//getUserStatus(users);很简单。在这里1中,您试图从尚未初始化的适配器获取与用户相关的内容,该适配器正在使用函数setListAdapters(users)初始化。在这里2,初始化适配器后,您将获得用户,因此它工作正常。

getListAdapter
返回您通过
setListAdapter
提供的内容。您需要定义或初始化它
getListAdapter()
正在做什么,setListAdapter()也一样.对于这里1,您得到的适配器为空,因为您在调用
getAdapter
后初始化和设置适配器,而您没有
setAdapter
时,显然会得到空适配器,但适配器是在“重”代码(http请求)之后访问的从后台线程。也就是说,说
//code来获取一些数据的部分
非常耗时。