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

是否以编程方式向recyclerview添加新项?

方祺
2023-03-14

我还在想办法弄清楚回收站。我有一个arraylist,用于初始化回收器视图。

如何在设置适配器和布局管理器后向回收器视图添加新项目?

private void initData() {
        mItems = new ArrayList<String>();
        for (int i = 0; i < ITEMS_COUNT; i++) {
            mItems.add("Item " + (i + 1));
        }
    }

    private void initRecyclerView() {
        mRecentRecyclerView = (RecyclerView) findViewById(R.id.recentrecyclerView);
        mRecentRecyclerView.setHasFixedSize(true);
        mRecentLayoutManager = new LinearLayoutManager(this);
        mRecentRecyclerView.setLayoutManager(mRecentLayoutManager);



        mAdapter = new RecyclerView.Adapter<CustomViewHolder>() {
            @Override
            public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
                View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.notice_snippet
                        , viewGroup, false);
                return new CustomViewHolder(view);
            }

            @Override
            public void onBindViewHolder(CustomViewHolder viewHolder, int i) {
                viewHolder.noticeSubject.setText(mItems.get(i));
            }

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

        };
        mRecentRecyclerView.setAdapter(mAdapter);

    private class CustomViewHolder extends RecyclerView.ViewHolder {

        private TextView noticeSubject;

        public CustomViewHolder(View itemView) {
            super(itemView);

            noticeSubject = (TextView) itemView.findViewById(R.id.notice_subject);
        }
    }

所以基本上,在我initdata()initRecyclerView()之后,我如何向RecyclerView添加一个新项目呢??

共有3个答案

公羊光明
2023-03-14

如果您要将多个项目添加到列表中,请使用以下命令:

mAdapter.notifyItemRangeInserted(startPosition, itemcount);

这会通知所有注册的观察者,从positionStart开始的当前反映的itemCount项已被新插入。以前位于positionStart和beyond的项目现在可以从PositionInstart itemCount位置开始找到

数据集中的现有项仍然被认为是最新的。

郗浩
2023-03-14

只需添加到数据结构(mItems),然后将数据集更改通知适配器即可

private void addItem(String item) {
  mItems.add(item);
  mAdapter.notifyDataSetChanged();
}

addItem("New Item");
夏季萌
2023-03-14

首先将您的物品添加到mItems中,然后使用:

mAdapter.notifyItemInserted(mItems.size() - 1);

此方法优于使用:

mAdapter.notifyDataSetChanged();

在性能。

 类似资料:
  • 我正在尝试在Android上添加Wifi网络,我想知道如何连接到不广播其SSID的Wifi网络(它是否有空SSID或带有\0s的清晰SSID)。 这是我目前用于广播其SSID的Wifi网络的内容:

  • 我对使用Swift的UIKit相对较新。目前,我正在尝试制作一个简单的UITableView,其中包含每个单元格的几个UILabels(纯粹以编程方式),尽管我在尝试这样做时遇到了很多麻烦。我的代码如下: 这是当前在模拟器中显示的内容。 这是我想看到的。 我如何着手改变我先前存在的代码以得到我所寻求的最终结果?我有一种感觉,这与我的代理或数据源有关,但无论我做什么,我似乎总是迷路。任何帮助都将不胜

  • 我有一个模型,其中有一个@列(nullable=false)注释HiberNate和所有字段有nullable=false,我想以编程方式添加一些新的注释,如@NotNull和@ApiModelProperty(必需=true)-用于招摇过市。 所以,我希望能够从我的应用程序的模型中解析所有字段,获得现有的注释,并在此基础上添加新的注释。这能做到吗? 更新:问题是每次添加一个新字段,如果它不能为空

  • 我正在使用SpringDoc,并试图以编程方式向OpenApi添加一个模式,但没有成功。 mySchema的描述没有添加到我在生成的YAML文件中看到的模式列表中,如果我试图引用它:

  • 问题内容: 我想在头部分中以编程方式添加StyleSheets,但是我看到的示例之一似乎需要多行代码才能仅添加一个样式表,即使我可能需要很多: 示例代码: 我也使用方法,但是它也不起作用。对象null抛出了错误。 我也使用了和东西,但是它们抛出了文字错误,这是我认为的常见错误。 我使用此代码: 起初它起作用,但是当我更改页面时,它停止工作。 我正在使用“母版页”,并且正在文件中编写这些代码,也有人

  • 问题内容: 我正在尝试使用导航栏(“后退”按钮,标题等)和选项卡栏(底部的工具栏)制作一个应用程序。我使用的是子视图,因此不必担心状态栏,导航栏,标签栏的高度等问题。但是我认为这给我带来了麻烦,因为我似乎无法弄清楚如何设置导航栏和标签栏。 这就是我所拥有的。我究竟做错了什么? AppDelegate.h AppDelegate.m ViewController.h ViewController.m