我想使用的分段數據RecyclerView但它繼續顯示錯誤RecyclerView沒有佈局管理RecyclerView沒有佈局管理的Android
這裏是我的適配器
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();
}
}
片段
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;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_now_playing, container, false);
String idKota = m.getIdKota();
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 KotaAdapter(new ArrayList<Kota>());
mRecyclerView.setAdapter(mAdapter);
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> movies = response.body();
Log.d("Retrofit Get", "Jumlah data : " +
String.valueOf(movies.size()));
mAdapter = new FilmAdapter(movies);
mRecyclerView.setAdapter(mAdapter);
}
@Override
public void onFailure(Call<List<Film>>call, Throwable t) {
}
});
mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), this));
return v;
}
@Override
public void onItemClick(View childView, int position) {
}
@Override
public void onItemLongPress(View childView, int position) {
}
}
展示
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.ecinema.sekaranindyaputri.ecinema.MainActivity"
tools:showIn="@layout/app_bar_main">
<android.support.v7.widget.RecyclerView
android:id="@+id/rootLayout"
android:layout_width="368dp"
android:layout_height="495dp"
android:layout_above="@+id/bottom_navigation"
android:orientation="vertical"/>
</android.support.constraint.ConstraintLayout>
fragment_now_playing.xml
<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>
grid_film.xml
<?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);
但它仍然錯誤。任何人都可以幫忙嗎?在此先感謝
不要在RecyclerView本身中使用嵌套的子元素,而要使用另一個佈局並使其膨脹。參考這[後](http://stackoverflow.com/questions/33969443/why-is-it-saying-recyclerview-has-no-layoutmanager-when-there-is-one-please-s) –
@whenthemorningcomes你的意思是RecyclerView in activityMain? –
不,關於RecyclerView裏面fragment_now_playing.xml的處理是什麼?你在哪裏誇大這個觀點? –