我试图将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>
如果有人可以帮我修复这个问题,那将非常适合