Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.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
Java Android:RecyclerView适配器在构造函数处停止_Java_Android_Android Recyclerview - Fatal编程技术网

Java Android:RecyclerView适配器在构造函数处停止

Java Android:RecyclerView适配器在构造函数处停止,java,android,android-recyclerview,Java,Android,Android Recyclerview,我的RecyclerView的适配器不工作,我在所有地方添加了日志,以查看事件活动,但它没有从类的构造函数向前移动;尝试了多种方法,但无法找到相同的解决方案。下面是代码 编辑:我根据第一个答案添加了setData方法,但它显示了一个错误: 无法解析方法的setData(List您应该尝试将无效setData(List data)方法添加到适配器中,并从此方法更新mData,而不是像这样从构造函数更新: public void setData(List<String> data) {

我的RecyclerView的适配器不工作,我在所有地方添加了日志,以查看事件活动,但它没有从类的构造函数向前移动;尝试了多种方法,但无法找到相同的解决方案。下面是代码

编辑:我根据第一个答案添加了setData方法,但它显示了一个错误:


无法解析方法的setData(List您应该尝试将
无效setData(List data)
方法添加到适配器中,并从此方法更新
mData
,而不是像这样从构造函数更新:

public void setData(List<String> data) {
    mData = data;
}
adapter = new mAdapter(getContext());
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(adapter);
homeViewModel.getmQuestionsData().observe(getViewLifecycleOwner(), new 
    Observer<List<String>>() {
        @Override
        public void onChanged(List<String> mQuestionsList) {
            adapter.setData(mQuestionsList);
            adapter.notifyDataSetChanged();
        }
    });

我想你通过的名单是空的

将构造函数更改为此,并发布logcat输出:

public mAdapter(Context context, List<String> data) {
    this.mInflater = LayoutInflater.from(context);
    this.mData = data;
    Log.d(TAG,"Constructor");
    for (String s : mData)
    {
       Log.d(TAG, "In mAdapter: " + s);
    }
}
public mAdapter(上下文、列表数据){
this.mInflater=LayoutInflater.from(上下文);
this.mData=数据;
Log.d(标签“建造商”);
for(字符串s:mData)
{
Log.d(标签“In mAdapter:”+s);
}
}

您什么时候初始化适配器?我是说您在代码片段中放入了什么生命周期回调?对不起,我不明白您想说什么。此代码显示以下错误:无法解析方法的setData(列表),因为您需要创建名为
setData(data)的函数
数据
分配给您的
mData
我为您编写了setData方法,将其放在mAdapter类@shlokjain中如果仅此而已,则您传递给适配器构造函数的列表mQuestion为空-列表中没有任何项,这就是为什么您的recylerview不会显示任何内容。好的,那么recyclerview和adp你说的对吗?我会尝试同样的演示列表。非常感谢!
adapter = new mAdapter(getContext());
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(adapter);
homeViewModel.getmQuestionsData().observe(getViewLifecycleOwner(), new 
    Observer<List<String>>() {
        @Override
        public void onChanged(List<String> mQuestionsList) {
            adapter.setData(mQuestionsList);
            adapter.notifyDataSetChanged();
        }
    });
public mAdapter(Context context, List<String> data) {
    this.mInflater = LayoutInflater.from(context);
    this.mData = data;
    Log.d(TAG,"Constructor");
    for (String s : mData)
    {
       Log.d(TAG, "In mAdapter: " + s);
    }
}