RecyclerView没有LayoutManager Android

RecyclerView没有LayoutManager Android,android,android-layout,android-recyclerview,Android,Android Layout,Android Recyclerview,我试图使用RecyclerView在片段中显示数据,但它一直显示错误RecyclerView没有LayoutManager 这是我的适配器 public class FilmAdapter extends RecyclerView.Adapter<FilmAdapter.FilmViewHolder> { private List<Film> mFilmList; private Context context; public Film

我试图使用RecyclerView在片段中显示数据,但它一直显示错误RecyclerView没有LayoutManager

这是我的适配器

    public class FilmAdapter extends RecyclerView.Adapter<FilmAdapter.FilmViewHolder> {

    private List<Film> mFilmList;
    private Context context;

    public FilmAdapter(List <Film> FilmList) {
            mFilmList= FilmList;
    }


    public static class FilmViewHolder extends RecyclerView.ViewHolder {
        ImageView foto;

        public FilmViewHolder(View v) {
            super(v);
            foto = (ImageView) v.findViewById(R.id.posterFilm);
        }
    }

    @Override
    public FilmAdapter.FilmViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
        View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.grid_film, parent, false);
        FilmAdapter.FilmViewHolder mViewHolder = new FilmAdapter.FilmViewHolder(mView);
        return mViewHolder;
    }

    @Override
    public void onBindViewHolder(FilmViewHolder holder, int position) {
        Picasso.with(context).load("http://ecinema.esy.es/img/" + mFilmList.get(position).getBackdropPath()).resize(200, 250).into(holder.foto);
    }

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

但这仍然是一个错误。有人能帮忙吗?提前感谢

mRecyclerview来自哪里?它不是应该是recyclerview吗?

通过将适配器更改为

 public class FilmAdapter extends RecyclerView.Adapter<FilmAdapter.FilmViewHolder> {

    private List<Film> mFilmList;
    private Context context;

    public FilmAdapter(List <Film> FilmList) {
            mFilmList= FilmList;
    }

    @Override
    public FilmViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
        View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.grid_film, parent, false);
        FilmViewHolder mViewHolder = new FilmViewHolder(mView);
        return mViewHolder;
    }

    @Override
    public void onBindViewHolder(FilmViewHolder holder, int position) {
        Picasso.with(context).load("http://ecinema.esy.es/img/" + mFilmList.get(position).getBackdropPath()).resize(200, 250).into(holder.foto);
    }

    public static class FilmViewHolder extends RecyclerView.ViewHolder {
        public ImageView foto;

        public FilmViewHolder(View v) {
            super(v);
            foto = (ImageView) v.findViewById(R.id.posterFilm);
        }
    }

    @Override
    public int getItemCount() {
        return mFilmList.size();
    }
}
公共类FilmAdapter扩展了RecyclerView.Adapter{ 私人名单; 私人语境; 公共FilmAdapter(列表FilmList){ mFilmList=电影列表; } @凌驾 public FilmViewHolder onCreateViewHolder(视图组父级,int-viewType){ View mView=LayoutInflater.from(parent.getContext()).flate(R.layout.grid_film,parent,false); FilmViewHolder mViewHolder=新的FilmViewHolder(mView); 返回mViewHolder; } @凌驾 BindViewHolder上的公共无效(FilmViewHolder,内部位置){ 毕加索.with(context).load(“http://ecinema.esy.es/img/“+mFilmList.get(position.getBackdropPath()).resize(200250).into(holder.foto); } 公共静态类FilmViewHolder扩展了RecyclerView.ViewHolder{ 公众形象观; 公众电影观看者(视图v){ 超级(五); foto=(图像视图)v.findViewById(R.id.posterFilm); } } @凌驾 public int getItemCount(){ 返回mFilmList.size(); } } 而这个碎片

    public class NowPlayingFragment extends Fragment implements RecyclerItemClickListener.OnItemClickListener{
    ApiInterface mApiInterface;
    private RecyclerView mRecyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    public static MainActivity m;
    String idKota = m.getIdKota();

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

        View v = inflater.inflate(R.layout.fragment_now_playing, container, false);

        mRecyclerView = (RecyclerView) v.findViewById(R.id.rootLayout);
        mLayoutManager = new LinearLayoutManager(this.getActivity());
        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.setHasFixedSize(true);
        mApiInterface = ApiClient.getClient().create(ApiInterface.class);
        mAdapter = new FilmAdapter(new ArrayList<Film>());
        mRecyclerView.setAdapter(mAdapter);
        refresh();

        return v;
    }

    public void refresh() {
        Call<List<Film>> call = mApiInterface.getFilmPlaying(
                idKota
        );
        call.enqueue(new Callback<List<Film>>() {
            @Override
            public void onResponse(Call<List<Film>> call, Response<List<Film>> response) {
                List<Film> FilmList = response.body();
                Log.d("Retrofit Get", "Jumlah data : " +
                        String.valueOf(FilmList.size()));
                mAdapter = new FilmAdapter(FilmList);
                mRecyclerView.setAdapter(mAdapter);
            }

            @Override
            public void onFailure(Call<List<Film>>call, Throwable t) {
                Log.e("Retrofit Get", t.toString());
            }
        });

        //mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), this));
    }

    @Override
    public void onItemClick(View childView, int position) {

    }

    @Override
    public void onItemLongPress(View childView, int position) {

    }
}
公共类NowPlayingFragment扩展片段实现RecyclerItemClickListener.OnItemClickListener{
api接口;

私人回收视图mRecyclerView; 专用回收器查看适配器mAdapter; private RecyclerView.LayoutManager MLLayoutManager; 公共静态维护活动; 字符串idKota=m.getIdKota(); @可空 @凌驾 CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){ 视图v=充气机。充气(R.layout.fragment\u now\u playing,container,false); mRecyclerView=(RecyclerView)v.findViewById(R.id.rootLayout); mLayoutManager=newlinearlayoutmanager(this.getActivity()); mRecyclerView.setLayoutManager(mllayoutmanager); mRecyclerView.setHasFixedSize(true); mApiInterface=ApiClient.getClient().create(ApiInterface.class); mAdapter=newfilmadapter(newarraylist()); mRecyclerView.setAdapter(mAdapter); 刷新(); 返回v; } 公共无效刷新(){ Call Call=mApiInterface.getFilmPlaying( 伊德科塔 ); call.enqueue(新回调(){ @凌驾 公共void onResponse(调用、响应){ List FilmList=response.body(); Log.d(“改造获取”,“Jumlah数据:”+ String.valueOf(FilmList.size()); mAdapter=新的FilmAdapter(FilmList); mRecyclerView.setAdapter(mAdapter); } @凌驾 失败时公共无效(Callcall、Throwable t){ Log.e(“改造Get”,t.toString()); } }); //mRecyclerView.addOnItemTouchListener(新的RecyclerItemClickListener(getActivity(),this)); } @凌驾 public void onItemClick(视图子视图,int位置){ } @凌驾 公共视图(视图子视图,内部位置){ } }
地点

以前
mRecyclerView.setLayoutManager(mllayoutmanager)

删除回收器视图内的相对布局。不受其他布局或编辑器输入标记的影响,使用回收器视图

不要在回收器视图本身中使用嵌套的子元素,而是使用另一个布局并将其膨胀。参考这个@whenthemorningcomes你是指activityMain中的RecyclerView吗?不,关于片段中的RecyclerView\u now\u playing.xml有什么交易?您在哪里扩展此视图?@Whenthemornings我删除了片段中的RecyclerView,但仍然错误RecyclerView没有布局管理器您可以发布grid\u film.xml文件的代码片段吗?如果可能,请同时发布logcat信息;如果使用recyclerview而不是mRecycleview,会发生什么?
    <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.ecinema.sekaranindyaputri.ecinema.Home.NowPlayingFragment">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <ViewFlipper
            android:layout_width="fill_parent"
            android:layout_height="113dp"
            android:id="@+id/slideFilm">
        </ViewFlipper>

    </LinearLayout>

    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/progressBar"
        android:layout_centerInParent="true"
        android:visibility="gone"/>
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true">

        <GridView
            android:id="@+id/gridPlaying"
            android:layout_width="match_parent"
            android:layout_height="400dp"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="0dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:background="@color/colorPrimary"
            android:clickable="true"
            android:columnWidth="150dp"
            android:drawSelectorOnTop="true"
            android:focusable="true"
            android:gravity="center"
            android:horizontalSpacing="5dp"
            android:numColumns="auto_fit"
            android:stretchMode="columnWidth"
            android:verticalSpacing="5dp" />

    </RelativeLayout>

</android.support.v7.widget.RecyclerView>
    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff"
    android:id="@+id/filmLayout">

    <ImageView
        android:layout_width="165dp"
        android:layout_height="150dp"
        android:id="@+id/posterFilm"
        android:layout_alignParentEnd="true" />

</LinearLayout>

Logcat

05-08 19:44:05.852 30270-30270/com.ecinema.sekaranindyaputri.ecinema E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                   Process: com.ecinema.sekaranindyaputri.ecinema, PID: 30270
                                                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ecinema.sekaranindyaputri.ecinema/com.ecinema.sekaranindyaputri.ecinema.MainActivity}: android.view.InflateException: Binary XML file line #1: RecyclerView has no LayoutManager
                                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2423)
                                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)
                                                                                       at android.app.ActivityThread.access$900(ActivityThread.java:153)
                                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)
                                                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                       at android.os.Looper.loop(Looper.java:148)
                                                                                       at android.app.ActivityThread.main(ActivityThread.java:5441)
                                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
                                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
                                                                                    Caused by: android.view.InflateException: Binary XML file line #1: RecyclerView has no LayoutManager
                                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:543)
                                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
                                                                                       at com.ecinema.sekaranindyaputri.ecinema.Home.NowPlayingFragment.onCreateView(NowPlayingFragment.java:48)
                                                                                       at android.app.Fragment.performCreateView(Fragment.java:2220)
                                                                                       at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:973)
                                                                                       at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148)
                                                                                       at android.app.BackStackRecord.run(BackStackRecord.java:799)
                                                                                       at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1537)
                                                                                       at android.app.FragmentController.execPendingActions(FragmentController.java:325)
                                                                                       at android.app.Activity.performStart(Activity.java:6319)
                                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2386)
                                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483) 
                                                                                       at android.app.ActivityThread.access$900(ActivityThread.java:153) 
                                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 
                                                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                       at android.os.Looper.loop(Looper.java:148) 
                                                                                       at android.app.ActivityThread.main(ActivityThread.java:5441) 
                                                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) 
                                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628) 
                                                                                    Caused by: java.lang.IllegalStateException: RecyclerView has no LayoutManager
                                                                                       at android.support.v7.widget.RecyclerView.generateLayoutParams(RecyclerView.java:3737)
                                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:506)
                                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:427) 
                                                                                       at com.ecinema.sekaranindyaputri.ecinema.Home.NowPlayingFragment.onCreateView(NowPlayingFragment.java:48) 
                                                                                       at android.app.Fragment.performCreateView(Fragment.java:2220) 
                                                                                       at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:973) 
                                                                                       at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148) 
                                                                                       at android.app.BackStackRecord.run(BackStackRecord.java:799) 
                                                                                       at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1537) 
                                                                                       at android.app.FragmentController.execPendingActions(FragmentController.java:325) 
                                                                                       at android.app.Activity.performStart(Activity.java:6319) 
                                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2386) 
                                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483) 
                                                                                       at android.app.ActivityThread.access$900(ActivityThread.java:153) 
                                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 
                                                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                       at android.os.Looper.loop(Looper.java:148) 
                                                                                       at android.app.ActivityThread.main(ActivityThread.java:5441) 
                                                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) 
                                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628) 
mRecyclerView.setHasFixedSize(true);
 public class FilmAdapter extends RecyclerView.Adapter<FilmAdapter.FilmViewHolder> {

    private List<Film> mFilmList;
    private Context context;

    public FilmAdapter(List <Film> FilmList) {
            mFilmList= FilmList;
    }

    @Override
    public FilmViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
        View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.grid_film, parent, false);
        FilmViewHolder mViewHolder = new FilmViewHolder(mView);
        return mViewHolder;
    }

    @Override
    public void onBindViewHolder(FilmViewHolder holder, int position) {
        Picasso.with(context).load("http://ecinema.esy.es/img/" + mFilmList.get(position).getBackdropPath()).resize(200, 250).into(holder.foto);
    }

    public static class FilmViewHolder extends RecyclerView.ViewHolder {
        public ImageView foto;

        public FilmViewHolder(View v) {
            super(v);
            foto = (ImageView) v.findViewById(R.id.posterFilm);
        }
    }

    @Override
    public int getItemCount() {
        return mFilmList.size();
    }
}
    public class NowPlayingFragment extends Fragment implements RecyclerItemClickListener.OnItemClickListener{
    ApiInterface mApiInterface;
    private RecyclerView mRecyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    public static MainActivity m;
    String idKota = m.getIdKota();

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

        View v = inflater.inflate(R.layout.fragment_now_playing, container, false);

        mRecyclerView = (RecyclerView) v.findViewById(R.id.rootLayout);
        mLayoutManager = new LinearLayoutManager(this.getActivity());
        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.setHasFixedSize(true);
        mApiInterface = ApiClient.getClient().create(ApiInterface.class);
        mAdapter = new FilmAdapter(new ArrayList<Film>());
        mRecyclerView.setAdapter(mAdapter);
        refresh();

        return v;
    }

    public void refresh() {
        Call<List<Film>> call = mApiInterface.getFilmPlaying(
                idKota
        );
        call.enqueue(new Callback<List<Film>>() {
            @Override
            public void onResponse(Call<List<Film>> call, Response<List<Film>> response) {
                List<Film> FilmList = response.body();
                Log.d("Retrofit Get", "Jumlah data : " +
                        String.valueOf(FilmList.size()));
                mAdapter = new FilmAdapter(FilmList);
                mRecyclerView.setAdapter(mAdapter);
            }

            @Override
            public void onFailure(Call<List<Film>>call, Throwable t) {
                Log.e("Retrofit Get", t.toString());
            }
        });

        //mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), this));
    }

    @Override
    public void onItemClick(View childView, int position) {

    }

    @Override
    public void onItemLongPress(View childView, int position) {

    }
}
mRecyclerView.setHasFixedSize(true);