简要说明:我对java或android studio不是很有经验,所以请直接回答我的noobish问题。
我正在做一个有RAL颜色片段的项目。总共只有280多张图片。我正在尝试为此片段创建一个recyclerView。为了避免这个问题比实际问题长出几英里,我删去了ralfragment中的一些颜色。
我希望颜色的布局如下所示:
image1 image2 image3
image4 image5 image6
...
image280 image281
(The last line only has 2 images.)
我看了一些教程(没有一个是在片段中使用rv的),并试图将它们实现到我的项目中,但我遇到了以下错误:
java.lang.IllegalStateException: RecyclerView has no LayoutManager android.support.v7.widget.RecyclerView{ab3c28d VFED.... ......I. 0,0-0,0 #7f0800a2 app:id/recyclerView}, adapter:null, layout:null, context:com.westcoastpowdercoating.WestCoastPowderCoating.MainActivity@3b25cc8b
at android.support.v7.widget.RecyclerView.generateLayoutParams(RecyclerView.java:4304)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:808)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at com.westcoastpowdercoating.WestCoastPowderCoating.ralfragment.onCreateView(ralfragment.java:23)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:733)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
根据此错误推测,layoutmanager或RecycleServicewer未连接。我不知道我哪里出错了。我需要在我的主要活动中做点什么吗。Java语言在我观看的教程中,他们充分利用了我的ralfragment。java在其主要活动中。java,但我想我必须将其移动到我的ralfragment。java,因为这是我需要recycvlerView的片段。
这是我的ralfragment。java:
public class ralfragment extends Fragment {
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_ral, container, false);
ArrayList<ralcolor> ralcolors= new ArrayList<>();
ralcolors.add(new ralcolor(R.drawable.ral1000, R.drawable.ral1001, R.drawable.ral1002));
ralcolors.add(new ralcolor(R.drawable.ral1003, R.drawable.ral1004, R.drawable.ral1005));
ralcolors.add(new ralcolor(R.drawable.ral1006, R.drawable.ral1007, R.drawable.ral1011));
ralcolors.add(new ralcolor(R.drawable.ral1012, R.drawable.ral1013, R.drawable.ral1014));
ralcolors.add(new ralcolor(R.drawable.ral1015, R.drawable.ral1016, R.drawable.ral1017));
ralcolors.add(new ralcolor(R.drawable.ral1018, R.drawable.ral1019, R.drawable.ral1020));
mRecyclerView = view.findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getActivity());
mAdapter = new Adapter(ralcolors);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
我的适配器:
public class Adapter extends RecyclerView.Adapter<Adapter.viewHolder> {
private ArrayList<ralcolor> mralcolors;
public static class viewHolder extends RecyclerView.ViewHolder {
public ImageView mImageView1;
public ImageView mImageView2;
public ImageView mImageView3;
public viewHolder(View itemView) {
super(itemView);
mImageView1 = itemView.findViewById(R.id.imageView1000);
mImageView2 = itemView.findViewById(R.id.imageView1001);
mImageView3 = itemView.findViewById(R.id.imageView1002);
}
}
public Adapter(ArrayList<ralcolor> ralcolors) {
mralcolors = ralcolors;
}
@NonNull
@Override
public viewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.fragment_ral, viewGroup, false);
viewHolder vh = new viewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(@NonNull viewHolder viewHolder, int i) {
ralcolor currentcolor = mralcolors.get(i);
viewHolder.mImageView1.setImageResource(currentcolor.getmImageResource1());
viewHolder.mImageView2.setImageResource(currentcolor.getmImageResource2());
viewHolder.mImageView3.setImageResource(currentcolor.getmImageResource3());
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public int getItemCount() {
return mralcolors.size();
}
}
我的AL xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp">
<LinearLayout
android:layout_gravity="center_horizontal"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:orientation="horizontal"
android:paddingTop="5dp">
<ImageView
android:id="@+id/imageView1000"
android:layout_height="100dp"
android:layout_width="100dp" />
<ImageView
android:id="@+id/imageView1001"
android:layout_height="100dp"
android:layout_width="100dp" />
<ImageView
android:id="@+id/imageView1002"
android:layout_height="100dp"
android:layout_width="100dp" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
我的ral颜色检索器java:
package com.westcoastpowdercoating.WestCoastPowderCoating;
public class ralcolor {
private int mImageResource1;
private int mImageResource2;
private int mImageResource3;
public ralcolor(int imageResource1, int imageResource2, int
imageResource3) {
mImageResource1 = imageResource1;
mImageResource2 = imageResource2;
mImageResource3 = imageResource3;
}
public int getmImageResource1() {
return mImageResource1;
}
public int getmImageResource2() {
return mImageResource2;
}
public int getmImageResource3() {
return mImageResource3;
}
}
谢谢你的帮助。
不能在XML中的RecyclerView中放置子项。看起来您当前拥有的内容就是您希望在ViewHolder中拥有的内容。这不是怎么做的。
创建一个新的布局XML文件,并将包装在RecyclerView中的内容移动到该文件中。
然后更改onCreateViewHolder()中的参数以使用正确的布局(更改R.layout.fragment\ral)。
创建一个 RecyclerView LayoutManager – Part 1 原文链接 : Building a RecyclerView LayoutManager – Part 1 原文作者 : Dave Smith 译文出自 : 开发技术前线 www.devtf.cn 译者 : tiiime 校对者: chaossss 状态 : 完成 本文是这个系列中的 Part 1,这里是 Part
嗨,我在新的上遇到了一个问题
我有方法: 将图像添加到我的recyclerview。如果它在活动中,我会在OnCreate中调用initImageBitmaps()。不幸的是,我必须在片段中使用它,问题是:如何将这些方法实现到扩展片段的类?当然,所有内容都将显示在RecyclerView中,并带有xml中的recycler\u视图id。 编辑:我的适配器: 它仅在注释mContext=context时编译 在适配器中。那么错误
我们从REST API获取到数据后,我们需要把它绑定View上,并用一个适配器填充列表。我们的RecyclerView适配器是标准的。它继承于RecyclerView.Adapter并指定它自己的ViewHolder: public static class ViewHolder extends RecyclerView.ViewHolder { @InjectView(R.id.name
我正在参加在线android工作室课程,我坚持这项任务。 将RecyclerView的layoutManager属性更改为GridLayoutManager https://github.com/google-developer-training/android-basics-kotlin-affirmations-app-solution
如何创建一个选项菜单,如以下屏幕截图: 点击RecyclerView项目的“更多”图标后,应打开选项菜单! 我的尝试是这样的: 但这会导致问题,因为如果我点击RecyclerView item More按钮,则会单击完整项目。。。 这是我的RecyclerViewOnTouchListener: 我没有发现任何类似的问题,所以我希望你能帮助我!