android 循环视图中的setLayoutManager空点异常

fjaof16o  于 2023-03-16  发布在  Android
关注(0)|答案(4)|浏览(146)

我尝试在RecyclerView中接收一个包含数组的列表,但出现错误:

java.lang.NullPointerException: Attempt to invoke virtual method 
'void android.support.v7.widget.RecyclerView.setLayoutManager
(android.support.v7.widget.RecyclerView$LayoutManager)'on a null object reference

回收站视图构件的

<android.support.v7.widget.RecyclerView
        android:id="@+id/drawerList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </android.support.v7.widget.RecyclerView>

我尝试将LayoutManager声明为final,但没有任何帮助。
活动代码:

public class MainActivity extends ActionBarActivity {

private RecyclerView recyclerView;
private Toolbar toolbar;
private InfAdapter adapter;

@Override
protected void onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main_appbar);

    recyclerView = (RecyclerView) findViewById(R.id.drawerList);

    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    InfAdapter mAdapter = new InfAdapter(this, getData());
    recyclerView.setAdapter(mAdapter);
    recyclerView.setItemAnimator(new DefaultItemAnimator());

    toolbar = (Toolbar) findViewById(R.id.app_bar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

}

适配器代码:

public class InfAdapter extends RecyclerView.Adapter<InfAdapter.MyViewHolder> {

  private final Context context;
    private  List<Information> data = Collections.emptyList();

    public InfAdapter(Context context, List<Information> data){
        this.data = data;
        this.context = context;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.custom_row, parent, false);
        return new MyViewHolder(v);
    }

    @Override
    public void onBindViewHolder(MyViewHolder  holder, int position) {

        Information current  = data.get(position);
        holder.title.setText(current.title);
        holder.icon.setImageResource(current.iconid);
    }

    @Override
    public int getItemCount() {
        return data.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder{
    TextView title;
    ImageView icon;

    public MyViewHolder(View itemView) {

        super(itemView);
        title = (TextView) itemView.findViewById(R.id.listText);
        icon = (ImageView) itemView.findViewById(R.id.listIcon);

        }
    }
}

可能出了什么问题?

toiithl6

toiithl61#

正如@StenSoft在评论中指出的,问题出现在setContentView (R.layout.activity_main_appbar);中,因为活动布局内容错误,而不是setContentView (R.layout.activity_main);

6ju8rftf

6ju8rftf2#

在我的例子中,这个错误是因为我没有在我的一个活动中创建RecyclerView
检查你的活动布局或片段布局。

ncgqoxb0

ncgqoxb03#

我也有过类似的经历,但在Kotlin和

RecyclerView.apply {}

代码,在行中:

layoutManager = viewManager

最后我发现这是因为我把错误的布局放大到了片段中,在这行中:

return inflater.inflate(R.layout.main_fragment, container, false)
cotxawn7

cotxawn74#

说真的,为了记录,检查recicler视图id

相关问题