当前位置: 首页 > 知识库问答 >
问题:

将RecyclerView显示为片段

弘和同
2023-03-14

我有方法:

private void initImageBitmaps() {
        mImageUrls.add("imageUrl");
        mNames.add("abcd");
        initRecyclerView();
    }

    private void initRecyclerView() {
        Log.d(TAG, "initRecyclerView: init recyclerview.");
        RecyclerView recyclerView = findViewById(R.id.recyclerv_view);
        RecyclerViewAdapter adapter = new RecyclerViewAdapter(this, mNames, mImageUrls);
        recyclerView.setAdapter(adapter);
        //recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
    }

将图像添加到我的recyclerview。如果它在活动中,我会在OnCreate中调用initImageBitmaps()。不幸的是,我必须在片段中使用它,问题是:如何将这些方法实现到扩展片段的类?当然,所有内容都将显示在RecyclerView中,并带有xml中的recycler\u视图id。

编辑:我的适配器:

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

    private static final String TAG = "RecyclerViewAdapter";

    private ArrayList<String> mImageNames = new ArrayList<>();
    private ArrayList<String> mImages = new ArrayList<>();
    private Context mContext;

    public RecyclerViewAdapter(WallpapersFragment context, ArrayList<String> imageNames, ArrayList<String> images ) {
        mImageNames = imageNames;
        mImages = images;
        mContext = context;
        //Rquired is android.content.context and found is WallpapersFragment from my project
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_listitem, parent, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {
        Log.d(TAG, "onBindViewHolder: called.");

        Glide.with(mContext)
                .asBitmap()
                .load(mImages.get(position))
                .into(holder.image);

        holder.imageName.setText(mImageNames.get(position));

        holder.parentLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(mContext, GalleryActivity.class);
                intent.putExtra("image_url", mImages.get(position));
                intent.putExtra("image_name", mImageNames.get(position));
                mContext.startActivity(intent);
            }
        });
    }

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


    public class ViewHolder extends RecyclerView.ViewHolder{

        ImageView image;
        TextView imageName;
        RelativeLayout parentLayout;

        public ViewHolder(View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.image);
            imageName = itemView.findViewById(R.id.image_name);
            parentLayout = itemView.findViewById(R.id.parent_layout);
        }
    }
}

它仅在注释mContext=context时编译 在适配器中。那么错误是:java。lang.NullPointerException:您不能在尚未连接的视图或getActivity()返回null的片段上启动加载(通常在连接片段之前或销毁片段之后调用getActivity()时发生)。

共有3个答案

顾宏朗
2023-03-14

您可以在以下生命周期回调中初始化回收器视图:

onViewCreated()

也可以在这里填充数据方法,如

initRecyclerView()

initImageBitmaps()

对于数据刷新,可以在适配器上调用notifyDatasetChanged()。

隗瑞
2023-03-14

initRecyclerView(视图);

然后:

 recyclerView = view.findViewById(R.id.recyclerv_view);
陆飞鸿
2023-03-14

片段类中有一个onCreate()方法,但该方法不同于活动的onCreate()。

public static class ExampleFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.example_fragment, container, false);
}

    @Override
public void onViewCreated (View view, Bundle savedInstanceState) {
            initRecyclerView();
    }

}

在此处阅读有关片段的更多信息:片段

 类似资料:
  • 本文向大家介绍Android添加图片到ListView或者RecyclerView显示,包括了Android添加图片到ListView或者RecyclerView显示的使用技巧和注意事项,需要的朋友参考一下 先上图   点击+号就去选择图片 实际上这个添加本身就是一个ListView或者 RecyclerView 只是布局有些特殊 item  在Adpater中判断一个数据是不是为0和是不是最后一

  • 问题内容: 我在用Firebase的数据制作片段时遇到问题。我希望应用程序在单击按钮以从一个片段更改为片段后显示,但是它确实更改了所显示的片段,但未显示任何内容。 我知道有很多这样的问题,但是我似乎找不到正确的解决方案。 我已经制作了Firebase RecyclerView所需的所有内容,并且还尝试将其构建在活动而不是片段中,并且确实可以,但是不能与片段一起使用。我试图初始化onCreateVi

  • 问题内容: 我正在运行python脚本,但不会显示图片。 我在该程序的目录中有一个apple.jpg图像,它应该显示图片,但没有。这是代码: 我的操作系统是Ubuntu,该程序只需完成就不会显示任何错误。 问题答案: 它适用于我在Ubuntu上。它使用Imagemagick显示图像。尝试这个:

  • 我在StackOverflow上看到了一些类似的事件。然而,这些似乎都不适用于我的情况。我遇到的问题是,我的RecyclerView正在工作,但没有显示任何内容。我已经运行了多个测试,试图找出它不工作的原因,但所有测试都支持它正常工作的事实。 getItemCount中的日志返回3,这是正确的数字。我只是不明白为什么它没有显示。我回头看了我在以前的活动中做的回收器视图,它们都在一定程度上匹配(其他

  • 没有显示在屏幕上,只是显示白色背景。 有什么错误吗?请告诉我,谢谢。 片断 我只想显示上的项目。

  • 简要说明:我对java或android studio不是很有经验,所以请直接回答我的noobish问题。 我正在做一个有RAL颜色片段的项目。总共只有280多张图片。我正在尝试为此片段创建一个recyclerView。为了避免这个问题比实际问题长出几英里,我删去了ralfragment中的一些颜色。 我希望颜色的布局如下所示: 我看了一些教程(没有一个是在片段中使用rv的),并试图将它们实现到我的