简体   繁体   English

在null对象引用上对'android.support.v7.widget.RecyclerView $ LayoutManager'的任何解决方案

[英]Any solution to 'android.support.v7.widget.RecyclerView$LayoutManager' on a null object reference

I have been trying to solve this problem for last 10 days I was unable to do so . 我一直试图解决这个问题,过去10天我无法解决这个问题。 I have used parse sdk for my app I was able to retrieve from parse server but no it crashes with this error. 我已经使用parse sdk为我的应用程序,我能够从解析服务器检索但没有它崩溃与此错误。

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 at com.example.sabhaysardana.coolDude.ExamWise.onCreateView(ExamWise.java:75)at android.support.v4.app.Fragment.performCreateView(Fragment.java:2087) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1643) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:679) at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143) at android.support.v4.view.ViewPager.populate(ViewPager.java:1272) at android.support.v4.view.ViewPager.populate(ViewPager.java:1120) at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1646)

So considering that app is able to println my values from the parse server but it is not showing in the table(rows) ie recyclerView 因此,考虑到该应用程序能够从解析服务器打印我的值,但它没有显示在表(行)即recyclerView

(My ExamWise Fragment) (我的ExamWise片段)

public class ExamWise extends Fragment implements RecyclerViewAdapter.ClickListener {

private RecyclerView recyclerView;
private RecyclerViewAdapter adapter;
private LinearLayoutManager layoutManager;
ArrayList<ItemsModel> data = new ArrayList<>();
ProgressDialog dialog;

public ExamWise() {

}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
}

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

    View rootView = inflater.inflate(R.layout.exam_row,container,false);
    rootView = (RecyclerView)rootView.findViewById(R.id.my_recycler_view);

    layoutManager = new LinearLayoutManager(getActivity());
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL);

    recyclerView.setLayoutManager(layoutManager);

   rootView.findViewById(R.id.my_recycler_view);

    recyclerView.setOnScrollListener(new EndlessRecyclerView(layoutManager) {
        @Override
        public void onLoadMire(int current_page) {
            int limit = current_page * 10;
                LoadItems(limit);
        }
    });

    return rootView;
}

@Override
public void onResume() {
    super.onResume();
    recyclerView.setOnScrollListener(new EndlessRecyclerView(layoutManager) {
        @Override
        public void onLoadMire(int current_page) {
            int limit = current_page * 10;
            LoadItems(limit);
        }
    });
    loadData();
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
}

@Override
public void OnItemClick(View view, int position) {
    Intent i = new Intent(getActivity(), ActivityItemView.class);
    ItemsModel model = data.get(position);
    i.putExtra("examName",model.getTitle());
    i.putExtra("examImage",model.getImageFile());
    startActivity(i);
}

private void LoadItems(int limit) {
    ParseQuery<ParseObject> query = ParseQuery.getQuery("examWise");
    query.setLimit(limit);
    dialog = new ProgressDialog(getActivity());
    dialog.setTitle("Loading");
    dialog.setMessage("Please Wait....");
    dialog.show();

    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            dialog.dismiss();
            if (e == null) {
                for (int a = 0; a < objects.size(); a++) {
                    ParseObject object = objects.get(a);
                    ItemsModel model = new ItemsModel();
                                      model.setImageFile(object.getParseFile("examImage").toString());

                        model.setTitle(object.getString("examName").toString());
                    data.add(model);
                }
                adapter.UpdateData(data);

            } else if (e.getCode() == ParseException.CONNECTION_FAILED) {
                Toast.makeText(getActivity(),"Error "+ e.getMessage(),Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getActivity(),"No internet connection!" , Toast.LENGTH_LONG).show();
            }

        }
    });
}

public void loadData() {
    ParseQuery<ParseObject> query = ParseQuery.getQuery("examWise");
    query.addAscendingOrder("date");
    dialog = new ProgressDialog(getActivity());
    dialog.setTitle("Loading");
    dialog.setMessage("Please Wait....");
    dialog.show();

    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            dialog.dismiss();
            if (e == null) {
                for (int a = 0; a < objects.size(); a++) {
                    ParseObject object = objects.get(a);
                    ItemsModel model = new ItemsModel();
                                            model.setImageFile(object.getParseFile("examImage").toString());                       model.setTitle(object.getString("examName").toString());
                    data.add(model);
                }

                adapter = new RecyclerViewAdapter(data, getActivity());
                adapter.setClickListerner(ExamWise.this);
                recyclerView.setAdapter(adapter);
            } else if (e.getCode() == ParseException.CONNECTION_FAILED) {
                Toast.makeText(getActivity(),"No internet connection!" , Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getActivity(),"Error "+ e.getMessage(),Toast.LENGTH_LONG).show();

            }

        }
    });
}
}

(My RecyclerViewAdapter) (我的RecyclerViewAdapter)

    public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>  {

ClickListener clickListener;
ArrayList<ItemsModel> itemsArray = null;
Context context;

RecyclerViewAdapter(ArrayList<ItemsModel> itemsArray, Context context)      {
    this.itemsArray = itemsArray;
    this.context = context;
}

public void UpdateData(ArrayList<ItemsModel> itemsArray){
    this.itemsArray = itemsArray;
    notifyDataSetChanged();
}

@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

       View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.exam_row,viewGroup,false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(RecyclerViewAdapter.ViewHolder viewHolder, int i) {

    viewHolder.Title.setText(itemsArray.get(i).getTitle()); 
Picasso.with(context).load(itemsArray.get(i).getImageFile()).into(viewHolder.imageView);
}

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

public void setClickListerner(ClickListener clickListerner) {
    this.clickListener = clickListerner;
}


     public  class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

    public TextView Title;
    public ImageView imageView;
    public View view;

    public ViewHolder(View itemView) {
        super(itemView);
        itemView.setOnClickListener(this);
        this.view = itemView;
        Title = (TextView) view.findViewById(R.id.homeTitle);
        imageView = (ImageView) view.findViewById(R.id.homeImage);
    }

    @Override
    public void onClick(View view) {
        if(clickListener != null){
            clickListener.OnItemClick(view, getPosition());
        }
    }
}

public interface  ClickListener{
    public  void  OnItemClick(View view, int position);
}
}

(My ItemsModel) (我的ItemsModel)

public class ItemsModel implements Parcelable {

private String title,imageFile;

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}


public String getImageFile() {
    return imageFile;
}

public void setImageFile(String imageFile) {
    this.imageFile = imageFile;
}

public ItemsModel() {

}

protected ItemsModel(Parcel in) {

 String[] array = new String[2];
    in.readStringArray(array);
    title = array[0];
    imageFile = array[1];
}

public static final Creator<ItemsModel> CREATOR = new     Creator<ItemsModel>() {
    @Override
    public ItemsModel createFromParcel(Parcel in) {
        return new ItemsModel(in);
    }

    @Override
    public ItemsModel[] newArray(int size) {
        return new ItemsModel[size];
    }
};

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel parcel, int i) {
    parcel.writeStringArray(new String[] {this.title,this.imageFile});
}
}

(My exam_row.xml) (我的exam_row.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"

android:background="@drawable/list_bg"
>

<com.parse.ParseImageView
    android:id="@+id/homeImage"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_margin="2dp"
    android:src="@drawable/ic_launcher"
    />

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@id/homeImage"
    >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:id="@+id/homeTitle"
        android:gravity="start"
        android:textAlignment="gravity"
        android:paddingRight="5dp"
        android:paddingLeft="3dp"
        android:paddingBottom="5dp"
        android:textSize="21sp"
        android:text="abcdefghijklmnopqrstuvwxyz"
        android:textColor="@color/colorBlack"
        android:maxLines="2"
        />

</RelativeLayout>

(My recycler_row) (我的recycler_row)

<?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/my_recycler_view"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:clickable="true"
    android:background="@color/colorGrey" />

Sorry community I have to attach this much amount of the code but my moral is getting down minute by minute . 对不起社区我必须附上这么多的代码,但我的道德观逐渐下降。 It's my first android project I hope get your result guys. 这是我的第一个android项目,我希望得到你的结果。

You are inflating your RecyclerView into another variable Change this 您正在将RecyclerView充气到另一个变量中更改此项

rootView = (RecyclerView)rootView.findViewById(R.id.my_recycler_view);

to this 对此

recyclerView = (RecyclerView)rootView.findViewById(R.id.my_recycler_view);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 RecyclerView没有LayoutManager android.support.v7.widget.RecyclerView - RecyclerView has no LayoutManager android.support.v7.widget.RecyclerView &#39;布尔android.support.v7.widget.RecyclerView $ LayoutManager.canScrollVertically()&#39; - 'boolean android.support.v7.widget.RecyclerView$LayoutManager.canScrollVertically()' NPE @ android.support.v7.widget.RecyclerView $ LayoutManager.detachViewInternal - NPE @ android.support.v7.widget.RecyclerView$LayoutManager.detachViewInternal android.support.v7.widget.RecyclerView:仅当通过appium打开应用程序时,空对象引用 - android.support.v7.widget.RecyclerView: null object reference only when app is opened via appium 空对象参考上的android.support.v7.widget.RecyclerView $ ViewHolder.shouldIgnore()&#39; - android.support.v7.widget.RecyclerView$ViewHolder.shouldIgnore()' on a null object reference 在执行recyclerView.addView时,对空对象引用的'boolean android.support.v7.widget.RecyclerView $ ViewHolder.shouldIgnore()' - 'boolean android.support.v7.widget.RecyclerView$ViewHolder.shouldIgnore()' on a null object reference when doing recyclerView.addView RecyclerView + ViewPager NullPointerException on&#39;boolean android.support.v7.widget.RecyclerView $ LayoutManager.canScrollHorizo​​ntally()&#39; - RecyclerView + ViewPager NullPointerException on 'boolean android.support.v7.widget.RecyclerView$LayoutManager.canScrollHorizontally()' 尝试调用虚方法 &#39;void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager - Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager android.support.v7.widget.RecyclerView null吗? 使用LinearLayoutManager - android.support.v7.widget.RecyclerView null ? with LinearLayoutManager 无法导入导入android.support.v7.widget.RecyclerView; - Cannot import import android.support.v7.widget.RecyclerView;
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM