android.support.v7.widget.RecyclerView.onMeasure中的java.lang.NullPointerException RecyclerView片段选项卡

时间:2015-07-19 09:30:42

标签: tabs fragment android-recyclerview

我试图将recyclelerView用于滑动标签中使用的片段,而我正面临着这个问题,通常是关于LayoutManager的问题,但在我的代码中,根据stackoverflow上的其他答案。

崩溃是由这种情绪造成的:

在android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:1764)

java.lang.NullPointerException

但我真的无法理解问题出在哪里,因为我使用的是LinearLayoutManager

tab_scheda.java

public class Tab_scheda extends Fragment {

private RecyclerView recyclerView;
private CustomViewAdapter adapter;

public Tab_scheda() {
    // Required empty public constructor
}

public static List<scheda> getdata() {

   List<scheda> data = new ArrayList<>();

    int[] icons = {R.drawable.ic_launcher,R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher };
    String[] titles = {"row1", "row2", "row3", "row4" };

    for (int i = 0; i < titles.length; i++) {
        scheda current = new scheda();
        current.id = icons[i];
        current.name = titles[i];
    }

    return data;

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.tab_scheda, container, false);
    recyclerView = (RecyclerView) v.findViewById(R.id.drawerList_sch);
    adapter = new CustomViewAdapter(getActivity(), getdata());
    recyclerView.setAdapter(adapter);
    LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
    recyclerView.setLayoutManager(mLayoutManager);

    return v;
}
}

tab_scheda.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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


</RelativeLayout>

CustomViewAdapter.java

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

    private LayoutInflater inflater;

        List<scheda>  data = Collections.emptyList();


    public CustomViewAdapter(Context context, List<scheda> data){
         inflater = LayoutInflater.from(context);
        this.data = data;
        }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=inflater.inflate(R.layout.row_scheda, parent ,false);
        MyViewHolder  myViewHolder = new MyViewHolder(view);

        return  myViewHolder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        scheda current = data.get(position);

        holder.image.setImageResource(current.id);
        holder.text.setText(current.name);
    }

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

    class MyViewHolder extends RecyclerView.ViewHolder {

        private TextView text;
        private ImageView image;

        public MyViewHolder(View itemView) {
            super(itemView);
            text  = (TextView) itemView.findViewById(R.id.text_scheda);
            image = (ImageView) itemView.findViewById(R.id.img_scheda);
        }
    }
}

row_scheda.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/img_scheda"
        android:layout_width ="wrap_content"
        android:layout_height ="wrap_content"
        android:src="@drawable/ic_launcher"
        android:layout_gravity="center_vertical" />

    <TextView
        android:id="@+id/text_scheda"
        android:layout_width  ="wrap_content"
        android:layout_height ="wrap_content"
        android:layout_gravity="center_vertical" />

</LinearLayout>

如果有人可以帮我修复这个问题,那将非常适合

0 个答案:

没有答案